マイナーだけど便利なpushd/popdコマンド ひとりぷちアドベントカレンダー2017 01日目
日々の思いつきの内容で ぷちアドベントカレンダー をやってみようというやつです。 中身は軽く雑多に、なにかしらアウトプットしよう、ということで。
マイナーだけど便利なpushd/popdコマンド
今回はCUI環境bash
のコマンド、pushd
とpopd
のお話です。
ざっくり行ってしまうと、便利なcd
です。
通常のcd
通常のcd
は場所を指定して移動します。
pwd # /tmp/adv01 mkdir -p path/to/dir cd path/to/dir # /tmp/adv01/path/to/dir
場所の代わりに-
を指定すると移動前にいた場所へ戻ります。
cd - # /tmp/adv01
もう一度実cd -
を実行すると、同じように移動前にいた場所へ戻ります。
cd - # /tmp/adv01/path/to/dir
この動作は、以前の場所を記録して、移動の毎に上書きすることで実現されています。
echo $OLDPWD # /tmp/adv01
上書きしてしまうため、2回移動するとスタート地点の情報は失われてしまいます。
複数回分記録してくれるpushd/popd
pushd
とpopd
は複数回の移動を順番に記録してくれるcd
のようなものです。
移動する時はpushd
、戻る時はpopd
を使います。
cd /tmp/adv01 # /tmp/adv01 pushd path/to # /tmp/adv01/path/to pushd dir # /tmp/adv01/path/to/dir popd # /tmp/adv01/path/to popd # /tmp/adv01
地味な違いですが、何かと便利な機能です。
作業範囲のトップへ移動してからpushd
とpopd
を活用する事で、親ディレクトリへの../../
を軽減する事ができます。
子ディレクトリから親へ辿るよりも、親から子へ補完入力するほうが楽な場合が多い気がします。
ほぼ移動しない場合はcd -
でも大丈夫ですが、うっかり複数移動しても戻れる安心感は良いものです。
また、とても環境依存な話ではありますが、複数人でアカウント共有する場合に便利な場合があります。 他の人が使わないためbashのヒストリーから利用しやすいのです。 ヒストリー周りについてはまた別の機会に。
おわりに
今回のpushd
とpopd
は特定のバイナリではなく、bash
の内蔵コマンドです。
そのためbinディレクトリをあさっても出てこない、という辺りがマイナーさをより強くしている気がします。
今回のコマンドを含め、内蔵のコマンドには割と便利なものが埋もれています。たまにはマニュアルを眺めると良い事があるかと思います。
bash小ネタ集になる予感......。