LoginSignup
277
275

More than 5 years have passed since last update.

zsh のあまり知られていなそうな機能

Posted at

自分が使っている便利な機能を紹介

$ 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 に移動できる。

zsh
$ pwd
/path/to/release/src/dir
$ cd release test
/path/to/test/src/dir

release とか test とか同じようなディレクトリ構成で階層が深くなっている時に、cd ../../test/src/dir で上に戻らなくても同じ階層に移動できる
cd ${PWD/old/new} と同等

277
275
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
277
275