pushd,popdコマンド 使い方

事の経緯

ディレクトリ間での移動は、cdコマンドを使います。
しかし、階層が深いディレクトリから浅いディレクトリに移動する際、いちいちパスを入力するのは、大変です。また、あるディレクトリで作業して、前のディレクトリに戻りたいとき、cdコマンドでは簡単に戻ることができません。
そういう時にディレクトリのパスを記憶してくれるpushd,popdコマンドについて記載します。この記事では、対象OSをUbuntuとします。

pushdコマンドの使い方

$ pushd 移動先のパス

cdコマンドと使い方は、同じです。このコマンドを打つと、移動先をカレントディレクトリにします。また、移動先のパスをディレクトリスタックという場所に保存します。また、ディレクトリスタックには、複数のディレクトリを記録できます。記録したディレクトリに移動したい場合、

$ pushd +番号

となります。番号は、pushdコマンドを打った際、表示されるディレクトリスタックで一番左を0、右に行くにつれて1,2…となっていきます。
現在のディレクトリスタックを確認する際は、dirコマンドを使います。
以下に例を示します。

写真

上の解説をします。
~ は、ホームディレクトリを指します。

上の写真の拡大

最初、pushdコマンドを打つことで、/etc/apache2/site-availableをディレクトリスタックに追加かつ移動、ディレクトリスタックの0に/etc/apache2/site-available、スタック1に~が入ります。

上の写真の拡大

次に、pushdコマンドで/var/www/htmlをディレクトリスタックに追加かつ移動、ディレクトリスタックの0に/var/www/html、スタック1に/etc/apache2/site-available、スタック2に~が入ります。

上の写真の拡大

pushd +1とすることで、ディレクトリスタックの1の/etc/apache2/site-availableに移動。それに伴い、ディレクトリスタックも移動します。
pushdコマンドで追加や番号で指定したパスは、ディレクトリスタックの0に移動します。
pushdは、引数なしでも移動できます。

dirsコマンドで現在のディレクトリスタックを確認しています。
pushdコマンドでディレクトリスタックの0と1を変更し、スタック0に移動します。
今回の例では、絶対パスで行っていますが、相対パスでも同様にできます。

popdコマンドの使い方

今のままだと、ディレクトリスタックにどんどんパスが増えていくばかりです。
popdコマンドは、移動先をカレントディレクトリにします。また、移動先のパスをディレクトリスタックという場所から削除します。pushdコマンドの逆というわけです。使い方は、以下のようにします。

$ popd 

上のコマンドを打つと、ディレクトリスタックの0に移動し、ディレクトリスタックに保存されたパスは、削除されます。

$popd +番号

上のコマンドを打つと、番号のディレクトリスタックを削除します。移動はしません。

以下に例を示します。

写真2

上の解説をします。
~ は、ホームディレクトリを指します。

上の写真2の拡大

最初に、dirsコマンドで現在のディレクトリスタックを確認しています。

上の写真2の拡大

次に、popd +1とすることで、ディレクトリスタックの1の~をディレクトリスタックから削除します。

上の写真2の拡大

popdとすることで、ディレクトリスタックの0の/var/www/htmlに移動し(今回はそのまま)、ディレクトリスタックから削除します。

上の写真2の拡大

popdとすることで、ディレクトリスタックの0の/etc/apache2/sites-availableに移動し、ディレクトリスタックから削除します。

上の写真2の拡大

popdコマンドをうっても、ディレクトリスタックには、なにもないため、移動しません。したがって、popdコマンドを使うときは、事前にpushdコマンドでディレクトリスタックにパスがないといけません

cdコマンドでも事足りるかも

作業ディレクトリを移動し、1つ前にいたディレクトリに戻りたいならば、cdコマンドで事足ります。

$ cd -

上記のコマンドで1つ前にいたディレクトリに戻れます。

まとめ

最近は、tabキーで補完するので、あまり使われないかもしれませんが、pushd,popdコマンドは、やはり使えるに越したことはないと思います。
個人的には、pushdコマンドぐらいしか使いませんが…

おススメ書籍

Linuxを学ぶ上で、おススメの書籍を紹介します。

Linux教科書 LPICレベル1 Version5.0対応

この書籍は、LPICというLinuxのプロフェッショナルとして認定される資格の教科書になります。

資格の教科書ですが、Linuxを学ぶ上でもってこいの書籍です。自分は、この書籍でLPICを取得しました。


Linux教科書 LPICレベル1 Version5.0対応
新しいLinuxの教科書

初めてLinuxを触る人でも分かりやすく表現されており、読みやすいです。


新しいLinuxの教科書