mattintosh note

どこかのエンジニアモドキの備忘録

bash

シェルで記号入りのランダムな文字列を生成する

ネットでパスワード生成出来るサービスあるじゃないですか?アレって生成結果保存してどっかに売ってたりするのかなとか思ったのでローカルでパスワードを生成することにしましたっていうだけの話。あまり精度は求めていません。 基本は前回と同じですでパタ…

bash でランダムな三択とか乱数作ったりとか

シェルスクリプト書いてるときに外部コマンドを使わずにシェルだけでハッシュっぽいもの作れないかなと思ったので頭の体操。 bash には ${パラメータ:オフセット:長さ} という変数の展開方法があり、例えば ${パラメータ:オフセット:1} とすれば「"パラメー…

Bash alias の「A trailing space in value causes(末尾に空白があると)」って何?

久しぶりに Bash のマニュアルを読む機会があって alias について読んでたら謎いことが書いてあった。 alias コマンドを引き数を付けずに (あるいは -p オプションを付けて) 実行すると、エイリアスのリストが 「alias name=value」の形で標準出力に出力され…

シェルスクリプトで2進数や16進数を変換

最近、A/Dコンバーターを使うので2進数を扱うことが多くなってきた。Python なんかだと 0b や 0x といった書式や bin() や hex() といった関数があるが、シェルスクリプトの場合はどうするのか?マニュアルを見るとこんな風に書いてある。 Constants with a …

sh・bash・zsh 他 echo 比較

Qiita に投稿しようと思ったけど書式エラーで貼れなかったのでこっちに貼っておく。 GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0) zsh 4.3.9 (i386-apple-darwin10.0) シェルおよびコマンドの種類 /bin/sh /bin/bash /bin/bash(xpg_echo…

bash のエクスポートされた関数の謎

bash で関数をエクスポートして遊んでいるときに不思議な現象に遭遇した。 md2html() { perl /usr/local/bin/Markdown.pl "$1" | cat /dev/fd/3 - /dev/fd/4 3<<EOS1 4<<EOS2 <!doctype html><html><body> EOS1 </body></html> EOS2 } これをエクスポートして実行すると /dev/fd/4 が開けないというエラーになる。 と</eos1>…

bash の for NAME in WORDS で "in WORDS" を省略した場合

help for より。 If `in WORDS ...;' is not present, then `in "$@"' is assumed. in WORDS を与えない場合 in "$@" だと仮定される。とのこと。 sh -c 'for args; do echo $args; done' -- "1 a" "2 b" "3 c" 1 a 2 b 3 c 書いてないソースコード見たこと…

while read で何故次の行が読めるのか

Qiita に投稿しようと思ったけどなんか毎回同じようなこと書いてても他の人にはまったく関係ないよねってことでブログに。 また新しい疑問が沸いて来た。 「while read; do :; done < file で何故次の行が読めるのかわからない。」 だって read < file した…

bash で PATH が伸びるアレ

ビルド専用のシェルプロファイルを書いていてふと思ったのでつらつらと。

Finder で選択した項目を Wine で開く(ターミナル兼用版)

Automator を使った Finder 用サービスのサンプルです。Finder で選択したファイルをコンテキストメニューからターミナルアプリケーションを経由して Wine で実行します。 WINELOADER の部分は MacPorts 用なのでそれ以外の場合はパスを変更して下さい。ター…

Wine で msi ファイルを開くときの「msiexec /i」を省略できるようにする

Wine で msi ファイルを開く時は… $ wine msiexec /i hoge.msi な感じで実行するんですが、bin/msiexec なんてものを発見。これもしかして単体で実行できるんじゃないの?って調べてみたら出来るっぽい。 msiexec - The Official Wine Wiki というわけで起動…

💻 sed でタブを入力するには?

sed でタブの削除や置換をしたりする話です。

QuickTime Player を複数起動する方法

QuickTime Player.app は同じファイルを複数のプレイヤーで起動できないが、open コマンドの -n オプションを使うことで複数起動できる。-a オプションでアプリケーションの指定がなければデフォルトのアプリケーションで起動する。 open -na "/Applications…

Finder × FFplay

ffmpeg をインストールすると ffplay も一緒にインストールされる。Mac でも VLC や GOM Player、Perian をインストールしておけばほとんどの動画は再生できるので ffplay が必要になることはあまりない。強いて ffplay の魅力をあげるとするならば「同一、…

Finder で選択した動画から ffmpeg で音声を抽出する

Automator と ffmpeg を使って Finder の選択項目から音声を抜き出したりするためのシェルスクリプトを考えてみた。サービスとして登録し、Finder のコンテキストメニューから呼び出せばターミナル上で ffmpeg を使って処理を行う。拡張子抽出部分はテストソ…

Finder からアーカイブの中身を確認する

ちょっと tar の勉強中なので Finder から選択したアーカイブ内のファイル一覧をテキストエディタで開くシェルスクリプトを考えてみた。 # mode: stdin while read f do [ ! -f "$f" ] && continue ### open in term ### #tmp=/tmp/`uuidgen` case "${f##*.}…

Finder で XZ 形式を扱う(p7zip)

この前、XZ Utils を使ったワークフローを作ったけど、--threads オプションを使っているのにスレッド数が増えないのでマニュアル見直したら「マルチスレッドにまだ対応してない」みたいなことが書いてあったので p7zip を使うことにした。 # mode: stdin wh…

Mac で p7zip のセルフビルド

MacPorts 版を使ってるけどセルフビルドを試してみたかったので。 MacPorts のポートファイルを見てみたら makefile.machine を変更することでカスタマイズできそう。makefile.macosx_64bits を makefile.machine にコピーして OPTFLAGS=-O を OPTFLAGS=-O3 …

Mac で 7zFM.exe を使う

Windows のアーカイバはファイルマネージャーを搭載していることがほとんどだけど、Mac ではあまり見かけない。コマンドラインなら p7zip や zipinfo を使ったりもできるけど、そこからさらに選択したファイルだけを解凍…となると GUI の方が楽だったりする…

Finder で選択した複数のディレクトリを個別に ZIP にする

Finder では複数の選択項目をひとつのアーカイブにすることはできても、個別にアーカイブ化することができないので Automator でアプリケーションを作ってみた。日付別なんかで JPEG イメージが保存されたディレクトリを個別に ZIP 化するのが目的。 ファイ…