返回到 cd 到主目录之前的目录位置

返回到 cd 到主目录之前的目录位置

众所周知,cd如果没有参数,则将当前目录更改为其主目录。我想知道在使用这样的命令后是否有任何方法cd可以返回到运行之前所在的目录位置cd

概括地说,在使用 -ed 到另一个目录后,是否有任何方法可以返回到上一个目录cd?这两个问题的答案似乎很可能是相同的,但以防万一,我将它们分开,因为第一个问题是我想要回答的主要问题。

答案1

是的:

cd -

或者

cd "$OLDPWD"

(如果目录名称不包含空格或通配符,则可以省略引号。)

它们适用于所有 POSIX 风格的 shell(bash、ksh、zsh 等)。cd -也适用于 tcsh 和 Fish。

答案2

我经常使用pushdpopd来避免这个问题。

例子

$ 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>

相关内容