web-dev-qa-db-ja.com

Linuxシェルで最後に使用したディレクトリに戻るにはどうすればよいですか?

Linuxシェルで使用された最後のディレクトリに戻るにはどうすればよいですか?

例:新しいシェル(または別のコンソールシェルのログ)を開き、次のように記述します。

root@vignesh : cd /root/Desktop 

これにより、/root/Desktopディレクトリに移動します(アクセスできる場合)

root@vignesh:~/Desktop# 

どうすれば前のディレクトリに戻ることができますか?
最後に使用したディレクトリに戻るコマンドはありますか?
前のディレクトリに戻るには、もう一度cdコマンドを使用する必要がありましたか?

cd -

cd -は、以前に使用したディレクトリ(存在する場合)に移動するか、エラーを生成します。

以前に使用されたディレクトリが存在する場合、現在の作業ディレクトリと前のディレクトリの値を更新して、正常な終了ステータス(0)。
それ以外の場合は、エラーメッセージが出力され、終了ステータス(1)が返されます。
cd -; echo $?で独自のチェックを行ってください。

スクリプトで使用する場合、終了ステータスが重要になります
0以外の終了ステータスは、スクリプト全体の実行を停止する可能性があり(set -eがある場合)、最悪の場合、cd -コマンドの終了ポイントにつながる可能性があります。スクリプトを作成し、間違ったディレクトリでコマンドを実行するときに考えていたものから:dir0から開始すると想像してください。 dir1に変更した後、dir2への変更に失敗します。ここで、cd -を実行します。あなたはdir1にいると思いますが、代わりにdir0にいます...そしてここからすべてが運命の手に委ねられます。


cd $OLDPWD(またはcd $owd

cdは、すべてのシェル(shから始まるすべて)の内部コマンドです。
Under dashおよびbashは、現在および古い作業ディレクトリの変数PWDOLDPWDを設定します。 cshtcshの下では、代わりにcwdowdが設定されます。

したがって、コマンドcd $OLDPWD inbashまたはcd $owd intcsh古い作業ディレクトリが存在する場合は移動し、この変数が設定されていない場合はホームディレクトリに移動します。
ホームディレクトリ(1)にアクセスできる場合、終了コードは常に0になります。


pushd newdir ... popd

pushdはスタックにディレクトリを追加し、popdはスタックからディレクトリを削除します。 cd -に関する利点は、署名されたディレクトリに戻るためにwhenを選択し、最後のディレクトリに戻ることを強制されないことです。もう1つの利点は、多数のディレクトリを積み上げて、ジャンプ先を決定できることです。これらの組み込みコマンドに関する情報については、help pushdおよびhelp popdを参照してください。


ノート:

  1. cd $NotAlreadySetVariableを書き込むことは、ホームディレクトリに移動するパラメータをまったく使用せずにcdを書き込むことと同じです。正確には、$HOME(bash、dash ...の場合)または$home(csh、tcsh ...の場合)内のディレクトリに移動します。このディレクトリが存在しないか、アクセスできない場合は、エラーが発生します。 $HOME(または$home)が空の場合、現在のディレクトリに残り、エラーは生成されず、$OLDPWD(または$owd)の値は次のように設定されます。現在のディレクトリ。

  2. $OLDPWD$owd変数は、前のディレクトリをコマンドのパラメータとして使用する場合に役立ちます。例えば。すべてのファイルを現在のディレクトリから古いディレクトリに移動します:mv * $OLDPWD


トリビアル
man bashから、PWDの定義では、現在の作業ディレクトリ(PWD)のようなものではなく、現在の作業ディレクトリ(cwd)が使用されていることに注意してください。

PWD       The logical value of the current working directory.
          This is set by the cd command.

OLDPWD    The previous logical value of the current working directory.  
          This is set by the cd command.

HOME      The  home  directory of the current user; the default argument for  
          the cd builtin command. The value of this variable is also used when   
          performing tilde expansion.

man tcshから

cdおよびpushd `-'を古い作業ディレクトリ(シェル変数owdと同等)として解釈します。これはまったく置換ではありませんが、これらのコマンドによってのみ認識される略語です。それにもかかわらず、それも引用することによって防ぐことができます。

5
Hastur

cdコマンドを使用して理解しました

cd - 

最後に使用したディレクトリにリダイレクトします

使用する pushd dirディレクトリを変更するにはpopdを使用してディレクトリを元に戻すにはdirsを使用してディレクトリスタックを表示するにはpushdを使用して現在のディレクトリを以前のディレクトリに切り替えます

3
Denis Kostousov