如何转到终端中的上一个工作目录?

Hoj*_*eri 259 shell cd-command

在终端中,如何定义一个键以转到使用cd命令更改目录时所在的上一个目录?

例如,I'm in /opt/soft/binand I cdinto/etc/squid3并且我想回到第一个目录。

Rap*_*ens 353

您可以使用

cd -
Run Code Online (Sandbox Code Playgroud)

或者你可以使用

cd "$OLDPWD"
Run Code Online (Sandbox Code Playgroud)

  • 可能是因为旧的 shell 没有在提示中显示当前目录的名称,所以在您键入 `cd -` 时查看目录的名称会很有帮助。例如,当你输入 `cd /usr/local` 时,你知道你在 `/usr/loal`,但是当你输入 `cd -` 时,你并不总是记得你来自哪个目录。所以它可以让你免于输入 `cd -; 密码`。但这都是猜测。 (10认同)
  • 知道为什么在使用 "cd -" 时将目录名称打印到控制台吗? (4认同)
  • 没有这个我怎么活? (4认同)
  • 或者您可以使用别名:将别名设置为 `alias -- -='cd -'` 然后使用 `-`(1 个字符)而不是 `cd -`(4 个字符)。更快`:D` (3认同)

小智 60

其他答案在直接答案意义上绝对是完整的。 cd -并且cd $OLDPWD绝对是这个的主要选择。但是,我经常发现使用pushdpopd更好地进入工作流程。

长话短说,如果您要进入一个目录,最终目的是回到起点,请使用pushd/ popd

扩展示例

主要区别很容易通过一个例子来说明。

$ cd dir1
$ pushd dir2
Run Code Online (Sandbox Code Playgroud)

此时,您有一个目录堆栈,即dir2, dir1. pushd不带参数运行将使您dir1现在回到堆栈中作为dir1, dir2. popd会做同样的事情,但会给你一个空的目录堆栈。这与您使用cd -工作流程的方式没有太大不同。

但是,现在您现在可以多次更改目录并返回到dir1. 例如,

$ cd dir1
$ pushd dir2
$ cd dir3
Run Code Online (Sandbox Code Playgroud)

如果此时运行popd,您将返回dir1.

  • 你也可以堆叠目录,所以重复使用`pushd`并在`popd`-ing时返回上一个文件夹。 (2认同)

Ant*_*hon 24

你应该使用:

cd ~-
Run Code Online (Sandbox Code Playgroud)

它与cd -(来自当前接受的答案)没有令人讨厌的目录回声一样,并且比cd "$OLDPWD"or更容易输入cd - > /dev/null

  • 将回声重定向到空文件!真是天才!! (2认同)
  • 回声显示新目录而不是前一个目录。我会发现它很有用,所以我知道我现在在哪里,特别是如果我在一个只显示当前目录名称(或什么都不显示)的 shell 中,而且我懒得更改提示显示完整路径。当然,如果您的提示已经显示了完整路径,则回声将是多余且烦人的。在这种情况下,我认为您可以尝试使用 `alias -- -='cd "$OLDPWD"'` 然后使用 `-`(1 个字符)而不是 `cd ~-`(5 个字符)。`:)` (2认同)

mez*_*ezi 18

$ cd - 
Run Code Online (Sandbox Code Playgroud)

将切换到之前的工作目录。