ディレクトリ位置の格納と取り出し(PUSHD, POPD)

広告

現在のカレントディレクトリの位置を記憶しておき、移動先のディレクトリから記憶したディレクトリに戻る方法を確認します。

現在のカレントディレクトリの位置を格納すると同時にカレントディレクトリを変更にはpushdコマンドを使用します。

pushd パス

pushdコマンドはcdコマンドと同様に指定したパスへカレントディレクトリを変更しますが、変更前のカレントディレクトリをスタックに格納します。スタックとは記憶場所だと考えて下さい。

スタックにディレクトリが格納されている状態でpopdコマンドを使用すると、スタックからディレクトリの情報を取り出しそのディレクトリに移動します。

popd

popdコマンドが実行されるとスタックから1つディレクトリ情報を取り出します。取り出された情報はスタックから削除されます。

パスを指定せずにpushdコマンドを実行した場合、現在スタックに格納されているディレクトリを表示します。

pushd

具体的な使い方は次のサンプルを見てください。

サンプル

では実際に試してみます。現在のカレントディレクトリを「C:¥cdtest¥」とします。

ディレクトリ位置の格納と取り出し(PUSHD, POPD)

「C:¥tmp¥」ディレクトリへpushdコマンドを使って移動します。

ディレクトリ位置の格納と取り出し(PUSHD, POPD)

この時、スタックには移動前のカレントディレクトリである「C:¥cdtest¥」ディレクトリが格納されています。では引数無しでpushdコマンドを実行し確認してみます。

ディレクトリ位置の格納と取り出し(PUSHD, POPD)

現在スタックに格納されている「C:¥cdtest¥」が表示されました。

ではpopdコマンドを実行して元のディレクトリに戻ります。

ディレクトリ位置の格納と取り出し(PUSHD, POPD)

このようにpushdコマンドとpopdコマンドは一時的に別のディレクトリに移動して作業を行い、その後で元のディレクトリに戻りたい場合などに便利です。

複数のディレクトリを格納する

pushdコマンドによってスタックに格納できるディレクトリは1つだけではありません。pushdコマンドによってディレクトリが格納された状態で、popdコマンドによって取り出される前に再度pushdコマンドを実行することでさらにディレクトリをスタックに格納します。

複数のディレクトリが格納されている状態でpopdコマンドを実行すると、最後に格納されたディレクトリが1つ取り出されます。ディレクトリが取り出される順番を変更することはできません。

では実際に試してみます。現在のカレントディレクトリを「C:¥cdtest¥」とします。

ディレクトリ位置の格納と取り出し(PUSHD, POPD)

「dat」ディレクトリへpushdコマンドを使って移動します。

ディレクトリ位置の格納と取り出し(PUSHD, POPD)

pushdコマンドで確認してみるとスタックに「C:¥cdtest¥」ディレクトリが格納されていることが確認できます。

ディレクトリ位置の格納と取り出し(PUSHD, POPD)

では「C:¥tmp¥」ディレクトリへpushdコマンドを使って移動します。

ディレクトリ位置の格納と取り出し(PUSHD, POPD)

pushdコマンドで確認してみるとスタックに「C:¥cdtest¥dat¥」ディレクトリと「C:¥cdtest¥」ディレクトリの二つが格納されていることが確認できます。

ディレクトリ位置の格納と取り出し(PUSHD, POPD)

ではpopdコマンドでスタックからディレクトリを取り出し移動します。この時取り出されるディレクトリは最後にスタックに格納された「C:¥cdtest¥dat¥」ディレクトリです。

ディレクトリ位置の格納と取り出し(PUSHD, POPD)

pushdコマンドで確認してみるとスタックから「C:¥cdtest¥dat¥」ディレクトリが削除され、「C:¥cdtest¥」ディレクトリだけが格納されていることが確認できます。

ディレクトリ位置の格納と取り出し(PUSHD, POPD)

このようにpushdコマンドとpopdコマンドは複数のディレクトリ情報を格納したり取り出したりすることができます。

( Written by Tatsuo Ikura )