UNIXを学ぶ10個の良い習慣

はてブのホットエントリ見てたら、
Learn10 good UNIX usage habitsという記事があって
以前書いたLinuxを学ぶための10個の効果的な方法と似てるなと思って見てたら知らなかったtipsが多かったのでメモ。

mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
mkdirhier project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}

こんなのでディレクトリが複雑に作れる。
面白い。
treeコマンドで見ると

project
|-- bin
|-- demo
|   `-- stat
|       `-- a
|-- doc
|   |-- html
|   |-- info
|   `-- pdf
|-- lib
|   `-- ext
`-- src

11 directories, 0 files

こんな感じ。


あと、シェル組む時にたまーに思い出してやってるけど

 cd tmp/a/b/c || mkdir -p tmp/a/b/c && tar xvf -C tmp/a/b/c ~/archive.tar

とかも役に立つ。cd が失敗したらfalseになるので、or条件の後ろのmkdirを実行してくれる。
そしてcd or mkdirが成功すれば and条件のtarを実行する感じ。
rubyでもやるよねー。


後timeコマンドという実行時間が測定できるコマンドがある事を始めて知った。


それと、awkを使ったマッチングで

ls -l | awk '$6 == "Dec"'

も感心
awkって式を書いて{}で書いた部分のロジックを特定の行だけ処理させるという事が出来る*1んですが、
{print;}は省略できるんですよね。
だから考えて見ればこーいうgrepの方法も出来るし、
grepと違って特定の列だけをマッチングできるから高機能だなーと。


いわれて見れば納得なんだけど、全然思いついてなかったからすごいなーと感心してしまった。

追記

echo project/{lib/ext,bin,src,doc/{html,info,pdf},demo/stat/a}
とかもできるらしい。
バッシュの機能だとか。

*1:というかそもそもそーいう言語