早速bash4.0の新機能をレビューしてみた
bash4が出た。bash4とzshの違いが気になっていた自分としてはいてもたってもいられずコンパイル&実験してみた。
取得、コンパイル、インストール
簡単だった。
wget http://ftp.gnu.org/gnu/bash/bash-4.0.tar.gz tar xzf bash-4.0.tar.gz cd bash-4.0 ./configure make sudo make install
サブディレクトリを再帰的にファイル検索するglobstar
shopt -s globstarすると再帰的にマッチする*である ** が使えるようになる。
$ mkdir -p a/b a/c/d a/e/f a/e/g ; touch a/A a/b/B a/c/C a/c/d/D a/e/E a/e/f/F a/e/g/G $ for i in a/** ; do echo $i ; done a/A a/b a/c a/e $ shopt -s globstar $ for i in a/** ; do echo $i ; done a/ a/A a/b a/b/B a/c a/c/C a/c/d a/c/d/D a/e a/e/E a/e/f a/e/f/F a/e/g a/e/g/G
testコマンドと組み合わせるとfindが不要になるとおもわれる?
$ for i in a/** ; do if [ -f $i ]; then echo $i ;fi ; done a/A a/b/B a/c/C a/c/d/D a/e/E a/e/f/F a/e/g/G
fi;doneが冗長に見えるがfindも-execでは \{} \; が必要だもんな。
追記 2009/02/25 23:50:26:
以下の2つの表記でもOK
$ for i in a/** ; do [ -f $i ] && echo $i; done $ for i in a/** ; { [ -f $i ] && echo $i; }
ディレクトリ名を入力するだけでカレントディレクトリを変更できるautocd
これをセットするとディレクトリ名でcdできるようになる。
$ a bash: a: command not found $ shopt -s autocd $ a cd a
入力補完時にディレクトリ名のスペルミスを修正するdirspell
補完時にスペルミスを修正するとあるがうまく使えない。
$ mkdir abcde $ shopt -s dirspell $ cd abf
ここで補完してくれると思ったんだけどなぁ
$ cd /usr/locl/bin<tab>
これはきちんと修正するんだけどなぁ。
$ cd /usr/local/bin/
caseのフォールスルーを実現する &; ;;&
まあ、使ってみればわかるが case中で ;; -> ;&にするとフォールスルーが実現できる。
$ case a in a) echo a;; b) echo b;; esac a $ case a in a) echo a;& b) echo b;; esac a b $ case b in a) echo a;& b) echo b;; esac b $ case a in a) echo 1;;& a) echo 2;; a)echo 3 ;; esac 1 2 $ case a in a) echo 1;;& b) echo 2;; a)echo 3 ;; esac 1 3 $ case a in a) echo 1;& b) echo 2;; a)echo 3 ;; esac 1 2
まあ、滅多に使わないか
標準エラーを標準出力にマージしながらアペンドする &>>
まあ今までだと
$ echo "1">a;ruby -e 'STDOUT.puts("stdout");STDERR.puts("stderr")' >> a 2>&1 $ cat a 1 stderr stdout
これじゃないと標準出力をマージしつつアペンド出来なかったのが
$ rm a; echo "1">a;ruby -e 'STDOUT.puts("stdout");STDERR.puts("stderr")' &>> a $ cat a 1 stderr stdout
これで出来るようになったと アペンドじゃないときには &> が使えてたからまあ問題なしだな。
感想
先行予測補完をのぞけば大体zshに近づいたのではないかと。
まあ、あと何点かあるけど気にしない。先日拡張したfcコマンドがあるしw > bashのfcコマンドを整形後にエディタで編集する - 計算機と戯れる日々
履歴のマージ等は「bashをzshに負けないぐらい高機能化するためのtips - 計算機と戯れる日々」をやれば今時のマシンパワーなら全く問題なし。
はやくubuntuに導入されないかな。