bash を使う理由 ― 2008年11月07日 20時08分10秒
最初の頃は、csh だろうが、tcsh だろうが、bash だろうがあまり関係無かった。tcsh や bash などの履歴が残り、編集できるものの方が好きではあったが。
次第に、コマンドラインからのループや条件式を多用するようになり始め、それ以来 bash に落ち着いている。sh と同じ文法でスクリプトが書けるのが、ksh や zsh などの他のシェルではない理由の一つ。また、コマンドの編集がしやすいのが、sh ではない理由。csh や tcsh は一行で、ループや条件が書けないので、それが目的の時は使わなくなった。
例えば、巨大なログファイル output.{1,2,3,4} があるとしよう。そこには、時刻があるのでそれを削除して比較したい。違う部分を見付けて、徐々にプログラムの設定をすりよせるのが目的だ。そこで、これらの四つのファイルを相互に比較して何が違うのかを見極めたい。
bash $ for i in 1 2 3 4 ;
do sed 's/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]//' output.${i} > /tmp/$i &
done;
wait;
for i in 1 2 3 4; do for j in 1 2 3 4; do
if [ $i -lt $j ]; then cmp /tmp/$i /tmp/$j; fi;
done; done
最初に、sed をバックグランドで一気に起動して、全ての処理が終るのを wait で待つ。終ったら、これらの四つのファイルを比較する。繰り返すし、次第にコマンドも変えていきたいので、上の矢印で前のコマンドに戻り編集できるのが便利だ。
この程度だと、ファイルにわざわざ書く必要が無いので楽だ。ファイルだと消すのが勿体無くなって、使い回せないのにたまっていく。履歴編集のコマンドもある程度使えるが、コマンドが長いし、同じ文字列も頻繁に出たり、スペースなども問題になってきて、履歴の置換による編集は辛い。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2008/11/07/3891119/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。