BlankTar

about | blog | works | photo

bashのコマンドにpushdpopdというコマンドがあります。
組み込みコマンドなので他のシェルにあるかどうかは知らない。
しばらく前にtwitterで便利だよって話を聞いた気がしたのだけれど、実際使ってる人は見たことが無い。謎なのでとりあえず使ってみることにしました。

dirs, pushd, popdの三つのコマンドでセットになっているようです。
ディレクトリのリストみたいなものを作って、それをぽんぽん移動しようじゃないか、ということみたい。

$ pwd
~
$ dirs
~
dirコマンドで記憶されてるディレクトリのリストを見れる。
最初は何も入れてないのでカレントディレクトリのみ。

例えば、ルートディレクトリに移動してみる。
cd使いたい気持ちを堪えてpushdを使います。
$ pushd /
/ ~
何かよくわかんないもんが出た。

この出力はdirsを実行した時の結果と一緒で、現在記憶されてるディレクトリのリストらしい。
$ dirs
/ ~
$ pushd /home
/home / ~
$ pwd
/home
$ dirs
/home / ~
こんな感じ。

引数をつけずにpushdを使うと、リストの左端(カレントディレクトリ)と左から二番目を入れ替える、らしい。
$ dirs
/home / ~
$ pushd
/ /home ~
$ pushd
/home / ~
不思議な動きだ・・・。素直に右にシフトしてくれりゃ良いのに。

じゃ3番めに行きたいときはどうすりゃ良いのかって言うと
$ pushd +2
~ /home /
$ pushd +2
/ ~ /home
左に2つシフトした。

$ dirs
/ ~ /home
$ pushd +1
~ /home /
$ pushd +1
/home / ~
一つずつでもシフトできる。
+nってやると、左からn番めのディレクトリが先頭にくるようにシフト、という意味になるらしい。
-nにすると、右からn番め、ということに。

リストから削除したいときは、
$ dirs
/home / ~
$ popd
/ ~
$ popd
~
こんな感じ。popdで左端が消える。

$ dirs
/home / ~
$ popd +1
/home ~
$ pwd
/home
途中から消すことも出来る。

$ dirs
/home / ~
$ popd -0
/home /
右から数えて消すときは負数を使えば良いらしい。


うーん・・・よく分からない。

参考:Man page of BASH_BUILTINS
< pythonで経過日数を計算する。ライブラリは使わない。 明けまして >