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; } 追記 ここまで 再帰的grepもお手のもの $ grep aaa **

ディレクトリ名を入力するだけでカレントディレクトリを変更できる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 まあ、滅多に使わないか