履歴を残しながらフォルダ移動するコマンドpushdと履歴をたどり元のフォルダに戻るpopdコマンドの解説

BASH,bat,バッチ

コマンドスクリプトでフォルダを移動する方法として、cdとpushdがあります。二つのコマンドの違いは移動履歴の有無です。cdコマンドは履歴がありませんが、pushdコマンドは履歴が残ります。この履歴を元にして、前のフォルダに戻るコマンドがpopdとなります。

今回はpushdとpopdコマンドについて解説し、最後にcdコマンドとの違いを少しばかり解説します。

履歴を残して移動

pushdコマンドは履歴を残して、フォルダを移動します。popdコマンドはこの履歴を元にフォルダを移動(戻り)します。

例えば、AフォルダからBフォルダへ移動するとします。pushd Aでフォルダを移動し、popdで元のフォルダに戻ります。

矢印のようにフォルダを移動

先程、図を実際にコマンドスクリプトで実行します。

pushd A
popd

このようにフォルダに戻ったことがわかります。次に3回移動して、戻りたいと思います。pushdを3回、popdを3回実行します。

矢印のようにフォルダを移動

コードは簡単です。単純にpushdを3回、popdを3回行うだけ。

pushd A
pushd B
pushd C
popd
popd
popd

コマンドスクリプトの結果はこちら。元のフォルダに戻ったことがわかります。このように3回移動しても、履歴は残っており、popdを使って戻ることができました。

cdコマンドとの違い

フォルダを移動するコマンドでcdがあります。cdは履歴が残らないので、前のフォルダに戻る時は「..」を使用します。1つのフォルダのみの移動の場合は、cdでも問題ありませんが、2個先のフォルダへどうする時はコードを記載す項目が増えてめんどくさくなってきます。

例えば、下記のように2個先のフォルダへ移動するケースを考えます。

まずpushdコマンドでフォルダ移動し、popdコマンドで元のフォルダに戻ます。コードは「¥」を使って、二つ先のフォルダに移動します。次にpopdで元のフォルダに戻りました。

次にcdコマンドで実行します。2個先のフォルダの移動はpushdコマンドと同じです。しかし、前のフォルダに戻る時に「..」を2回使用してしまいます。これが三つ四つとなると、「..」の回数が増えてきて手間になります。

pushdとcdコマンドの違いをまとめると下記の表のようになります。cdコマンドの「..¥..」が違いとしてあります。

pushd,popdcd
pushd B¥Cpopdcd B¥Ccd ..¥..

以上のように、cdコマンドは1個先のフォルダへ移動は特に問題ないです。一方で2個、3個、4個先のフォルダになると、元のフォルダに戻る作業が非常に手間となります。

2個以上のフォルダに移動して、元のフォルダに戻ることを想定している場合は、pushdコマンドを活用するといいでしょう。

コメント

タイトルとURLをコピーしました