私たちが知っているように、cd
引数がない場合、現在のディレクトリはホームディレクトリに変わります。このようなコマンドを使用した後、cd
実行する前に私が持っていたディレクトリの場所に戻る方法があるかどうか疑問に思いますcd
。
要約すると、他のディレクトリに-edを使用した後に以前のディレクトリに戻る方法はありますかcd
? 2つの質問に対する答えは同じようですが、もし私が最初の質問が私が答えたい主な質問であるので、私は別々にしました。
答え1
例:
cd -
または
cd "$OLDPWD"
(ディレクトリ名にスペースやワイルドカードが含まれていない場合は、引用符を省略できます。)
すべてのPOSIXスタイルのシェル(bash、ksh、zshなど)で動作します。cd -
tcshとFishでも動作します。
答え2
私はしばしばこの問題を避けるためにpushd
and を使います。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>