Hack 5. ディレクトリスタックを操作するために、dirs, pushd, popd を使用する

ディレクトリスタックを使用して、スタックにディレクトリを push したり、
その後にスタックからディレクトリを pop することができます。
次の3つのコマンドはこのサンプルで使用されています。

o dirs: ディレクトリスタックを表示する
o pushd: ディレクトリをスタックに push する
o popd: スタックからディレクトリを pop し、そこに移動する

dirs は常にカレントディレクトリを出力し、
続けてスタックの内容を出力します。
ディレクトリスタックが空のときでさえも、
dirs コマンドは以下に示すようにカレントディレクトリだけを出力するでしょう。

# popd
-bash: popd: directory stack empty

# dirs
~

# pwd
/home/ramesh

pushd や popd はどのように使うのでしょうか?
まずいくつかのテンポラリディレクトリを作成し、
以下に示すようにディレクトリスタックにそれを push してみましょう。

# mkdir /tmp/dir1
# mkdir /tmp/dir2
# mkdir /tmp/dir3
# mkdir /tmp/dir4

# cd /tmp/dir1
# pushd .

# cd /tmp/dir2
# pushd .

# cd /tmp/dir3
# pushd .

# cd /tmp/dir4
# pushd .

# dirs
/tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1

[Note: dir コマンドが出力する最初のディレクトリ (/tmp/dir4) は
常にカレントディレクトリで、スタックの内容ではありません。]

この段階では、ディレクトリスタックは次のディレクトリが含まれています:

/tmp/dir4
/tmp/dir3
/tmp/dir2
/tmp/dir1

スタックに push された最後のディレクトリが一番上にあります。
popd を実行すると、スタックの一番上のディレクトリエントリに移動し、スタックから削除します。
上で示したように、スタックに push された最後のディレクトリは /tmp/dir4 です。
popd を実行すると、/tmp/dir4 に移動し、以下のようにディレクトリスタックから削除されます。

# popd
# pwd
/tmp/dir4

[Note: 上記の popd の後ディレクトリスタックは次のようになります:
/tmp/dir3
/tmp/dir2
/tmp/dir1]

# popd
# pwd
/tmp/dir3

[Note: 上記の popd の後ディレクトリスタックは次のようになります:
/tmp/dir2
/tmp/dir1]

# popd
# pwd
/tmp/dir2

[Note: 上記の popd の後ディレクトリスタックは次のようになります:
/tmp/dir1]

# popd
# pwd
/tmp/dir1

[Note: 上記の popd の後ディレクトリスタックは空になります]

# popd
-bash: popd: directory stack empty