ちょっとしたテクニック集のおさらい
なんとなく知ってはいて便利だとわかっているんだけど、いざ使おうと思うとあれ何だったっけ。と調べもしないでさじを投げてしまうことが多々あります。そんなテクニック集を紹介している記事があがっていたので慣れるためにおさらいです。
odz buffer - shell のちょっとしたテクニック
http://d.hatena.ne.jp/odz/20070129/1170136615
連続実行
処理時間を確認したい時とかにやってる。
% date; foo; date
これも意識せずに「;」でつなげてた。。&&が正しい。
% ./configure && make
これは失敗したらの場合
% foo || bar
失敗したらもう一度実行してエラーログをとるとか?
foo||foo > error.log 2>&1
job control
これ覚えれば一番便利だと思うんだけど、なかなか慣れない。
Ctrl+z 処理の一時停止 jobs 処理の一覧 fg フォアグランドへ bg バックグラウンドへ
一時停止させといて、フォアグランドに持ってくるときにコマンド追加するのは便利。
% foo
(C-z)
% fg && bar
date入れ忘れた時とか。
% foo Ctrl+z % date;fg;date
複数のjobがある場合は、%1とか%2とか順番にjob番号が振られてて指定できるみたい。
場面としては、vi や less 中にちょっとあっちも確認したいとか。
% vi foo Ctrl+z % less bar Ctrl+z % fg %1 Ctrl+z % fg %2 Ctrl+z % fg %1
これなら複数コンソール開くか。
コマンド置換
これはスクリプト書くときに便利。
`command` か $(command) でコマンドの実行結果がコマンドライン中に展開される。
ファイルに日付を入れたい場合とか便利。
% foo > foo-`date +'%Y%m%d'`.log
プロセス置換
初めて知ったのがこれです。
<(command) は command の標準出力をあらわす名前付きパイプのファイル名に置換される。
つまり標準出力をパイプってことかな。こういうことかな。
% grep eth0 <(/sbin/ifconfig)
これと同じのような。
% /sbin/ifconfig |grep eth0
やはり例のようにパイプ2回分の時に役に立つのか
% diff -u <(foo) <(bar)
screen
自分もつい最近までscreen使ってなかったけど、もはやscreenは必須。これは後日で。
screen入ってないマシンで操作するとき、nohupよく忘れるので注意。