awkが必要ですが、簡単に書けました。しかし、シェルスクリプトではいつもクォーテションに悩まされます。まだまだ書いている量が足りないことを痛感してしまいます。
下記スクリプトの問題点として、Windows環境(cygwin)だとパスに空白が含まれる(Program Files)ためこのままでは使えません。適当に環境に併せて中間処理を挟む必要があります。
#!/bin/sh # command-list.sh temporary="temporary.data" for p in `echo $PATH | awk -F : '{for(i=1; i<=NF; i++) print $i}'` do ls $p >> $temporary done sort $temporary | awk '{printf "%04d %s\n", NR, $1;}' rm -f $temporary
手許の環境 (Mac OSX) で実行してみると次のようになりました。
$ ./command-list.sh | wc -l 2205つまり、利用可能なコマンドは2205個存在しています。自分が使っているものなんて氷山の一角にも満たないことがわかります。
man以外のawkに関するドキュメント→ NR, NFに関しては非常に便利なので覚えておきたい。
0 件のコメント:
コメントを投稿