2010年10月02日 19:00 [Edit]

tips - 君はpushd|popdを知っているか?

うーん、必要性感じたことないなあ。

上に行くcd作った - hitode909のダイアリー
シェルで,上のディレクトリに行くのがめんどくさくて,cd ../../../../とかしないといけなくて,指を痛める.
上に行くためのupっていうコマンドを作ることにした.

なぜないかといえば、pushdとpopdがあるから。


pushd path
(cdと同じく)pathをカレントディレクトリにした上で、shellが内部的に持っているディレクトリスタックにcd先のパスを押し込む。
popd
ディレクトリスタックをpopして、popされたディレクトリをカレントディレクトリにする

要するに、pushdをcdの代わりに使って、元いたディレクトリに戻りたいときにはpopdとすればよいわけです。元はcshの機能ですが、後継のtcshはもちろんbashにもzshにももちろん入っています。

いっそcdをpushdに置き換えればいいんじゃね?と言う方も少なくないみたいで、こんなページも見つけました。

bash Tricks From the Developers of the O'Reilly Network - O'Reilly ONLamp Blog
We’re opening files all over the file system, internal code, vendor code, templates, configuration files, logs. Because of this we like the ability to take a detour on the file system and still navigate back to our working directory of the day. I think these commands are so useful that I alias’d them in my .bashrc
alias cd="pushd"
alias bd="popd"

実は私もそうしています。bdではなくpにaliasしてはいますが。

これは「上に行きたい」に対する直接的な解答ではありませんが、たいていの「上に行きたい場合」というのは単に「元いたところに戻りたい」なのでこれで間に合うし、間に合わない場合も「上に行く」のではなく/からフルパスを指定する方が、補完があるのが当たり前の今日日のshellでは楽でもあり、そんなわけでup相当のコマンドが欲しいとは20年以上感じなかったというしだいです。

Dan the Unix User for More than Two Decades


この記事へのトラックバックURL