事の経緯
ディレクトリ間での移動は、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 +番号
上のコマンドを打つと、番号のディレクトリスタックを削除します。移動はしません。
以下に例を示します。
上の解説をします。
~ は、ホームディレクトリを指します。
最初に、dirsコマンドで現在のディレクトリスタックを確認しています。
次に、popd +1とすることで、ディレクトリスタックの1の~をディレクトリスタックから削除します。
popdとすることで、ディレクトリスタックの0の/var/www/htmlに移動し(今回はそのまま)、ディレクトリスタックから削除します。
popdとすることで、ディレクトリスタックの0の/etc/apache2/sites-availableに移動し、ディレクトリスタックから削除します。
popdコマンドをうっても、ディレクトリスタックには、なにもないため、移動しません。したがって、popdコマンドを使うときは、事前にpushdコマンドでディレクトリスタックにパスがないといけません
cdコマンドでも事足りるかも
作業ディレクトリを移動し、1つ前にいたディレクトリに戻りたいならば、cdコマンドで事足ります。
$ cd -
上記のコマンドで1つ前にいたディレクトリに戻れます。
まとめ
最近は、tabキーで補完するので、あまり使われないかもしれませんが、pushd,popdコマンドは、やはり使えるに越したことはないと思います。
個人的には、pushdコマンドぐらいしか使いませんが…
おススメ書籍
Linuxを学ぶ上で、おススメの書籍を紹介します。
この書籍は、LPICというLinuxのプロフェッショナルとして認定される資格の教科書になります。
資格の教科書ですが、Linuxを学ぶ上でもってこいの書籍です。自分は、この書籍でLPICを取得しました。
Linux教科書 LPICレベル1 Version5.0対応
初めてLinuxを触る人でも分かりやすく表現されており、読みやすいです。
新しいLinuxの教科書