自分が使っている便利な機能を紹介
$ rm **/*(-@)
ファイル修飾子は使っている人も多いはず。
zsh で find を使わずに簡単にファイルを絞り込む
-
*(@)
でシンボリックリンク -
*(-@)
でリンクが切れたシンボリックリンク -
rm **/*(-@)
で下位階層含めたリンク切れのシンボリックリンクの削除
修飾子で他に便利なのは
-
*(-ch-1)
シンボリックリンクのリンク先が1時間以内に作られたファイル -
*(U)
自分のファイル -
*(u:hoge:)
ユーザ hoge のファイル -
*(/^F)
空のディレクトリ
$ tkdiff =(zcat xxx.gz | cut -f 1) =(zcat xxx.gz | cut -f 2)
プロセス置換
<(zcat xxxx.gz | grep yyyy | cut -f 2 )
みたいな形でわざわざ一時ファイルにしなくても、ファイル指定でそのまま渡せるので便利。
出力ファイル指定のオプションにもa.out -o >(grep xxxxx | gzip > xxxx.gz)
みたいな形で出力ファイル指定すれば、無圧縮の大きいファイルができることもなくなる。
先頭が =
の場合には /tmp に一時ファイルとして実体ができる。
tkdiff とか <(xxx aaa)
ではうまく処理できないみたいなので、そういう時は =(xxx aaa)
を使う。
$ cd old new
良く使うコマンドの一つである cd。
zsh builtin の cd は実は引数を2個取れる
cd old new
で current directory の path から old を new に変えた dir に移動できる。
$ pwd
/path/to/release/src/dir
$ cd release test
/path/to/test/src/dir
release とか test とか同じようなディレクトリ構成で階層が深くなっている時に、cd ../../test/src/dir
で上に戻らなくても同じ階層に移動できる
cd ${PWD/old/new}
と同等