zshでコマンド引数の**は実行前に展開することができる

$ find . -name ‘.svn’ -exec rm -rf {} \; 2>/dev/null

http://d.hatena.ne.jp/smeghead/20070410/zsh

zshの<M-q>の機能の話の例の中で、長いコマンドという意味で上のようなコマンドを書きました。

最近妙に流行りのfindですが、bash系ならfindもxargsも使わなくていい。

#bashでもできるのは最近知った。(id:smeghead:20070410:zsh)

bash$ rm -rf **/.svn

これだけで同じことができる

更にzshの場合は、ワイルトカードが、どう展開されるかの確認もできます。

zsh$ rm -rf **/.svn■

■にカーソルがある状態で、tabキーを押すと、コマンド実行前に、ワイルトカードが展開される。

zsh$ rm -rf .svn/ src/.svn/ src/filters/.svn/ src/main/.svn/ src/main/java/.svn/
src/main/resources/.svn/ src/main/webapp/.svn/ src/main/webapp/WEB-INF/.svn/
src/main/webapp/WEB-INF/pages/.svn/ src/main/webapp/WEB-INF/spring/.svn/
src/main/webapp/css/.svn/ src/main/webapp/img/.svn/ src/main/webapp/js/.svn/
src/test/.svn/ src/test/java/.svn/ src/test/resources/.svn/■

余分なファイルがあったら、引数から消してから実行することもできる。勿論、候補が数百以上あるような場合は大変なことになるので(ry。


この機能は、どのオプションに影響を受けているとかの詳細は知りません。ここ数年.zsh*は弄ってないし、異常に設定を理解するのが難しいので。

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.