ホームディレクトリに cd する前にディレクトリの場所に戻ります。

ホームディレクトリに cd する前にディレクトリの場所に戻ります。

私たちが知っているように、cd引数がない場合、現在のディレクトリはホームディレクトリに変わります。このようなコマンドを使用した後、cd実行する前に私が持っていたディレクトリの場所に戻る方法があるかどうか疑問に思いますcd

要約すると、他のディレクトリに-edを使用した後に以前のディレクトリに戻る方法はありますかcd? 2つの質問に対する答えは同じようですが、もし私が最初の質問が私が答えたい主な質問であるので、私は別々にしました。

答え1

例:

cd -

または

cd "$OLDPWD"

(ディレクトリ名にスペースやワイルドカードが含まれていない場合は、引用符を省略できます。)

すべてのPOSIXスタイルのシェル(bash、ksh、zshなど)で動作します。cd -tcshとFishでも動作します。

答え2

私はしばしばこの問題を避けるためにpushdand を使います。popd

はい

$ pwd
/home/saml/tst/134317

$ ls -l
total 12
drwxrwxr-x. 2 saml saml 4096 Jun  3 16:05 dir1
drwxrwxr-x. 2 saml saml 4096 Jun  3 16:05 dir2
drwxrwxr-x. 2 saml saml 4096 Jun  3 16:05 dir3

今行きましょうdir1

$ pushd dir1
~/tst/134317/dir1 ~/tst/134317

$ pwd
/home/saml/tst/134317/dir1

そしてdir2

$ pushd ../dir2/
~/tst/134317/dir2 ~/tst/134317/dir1 ~/tst/134317

$ pwd
/home/saml/tst/134317/dir2

今私たちが来たばかりの場所に戻ります。

$ popd
~/tst/134317/dir1 ~/tst/134317

$ pwd
/home/saml/tst/134317/dir1

次のコマンドを使用して、スタック内のディレクトリを確認できますdirs

$ dirs
~/tst/134317/dir1 ~/tst/134317

現在存在するディレクトリは一番左のディレクトリです。

~/tst/134317/dir1

私たちが「ポップ」するディレクトリは右側にあるディレクトリです。

~/tst/134317

ディレクトリを追加すると、引き続きディレクトリを左に「プッシュ」し、左から「ポップ」します。

答え3

Bashを使用すると、「cd -」の代わりにPushd / popdを使用できます。これにより、ディレクトリスタック操作が可能になります。

cd <path1> => move to <path1>
pushd <path2> => move to <path2>
pushd <path3> => move to <path3>
...
popd => return to <path2>
popd => return to <path1>

関連情報