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


Answers:


283

您可以使用

cd -

或者你可以使用

cd $OLDPWD

3
知道为什么使用“ cd-”时将目录名打印到控制台吗?
dtmland 2015年

4
可能是由于旧的shell在提示符下未显示当前目录的名称,因此在键入时查看目录名称会很有帮助cd -。例如,当您键入内容时,cd /usr/local您知道自己在/usr/loal,但是当您键入cd -内容时,并不总是记住您来自哪个目录。因此,您无需输入cd -; pwd。但这全是猜测。
拉斐尔·阿伦斯

2
或者,您可以使用别名:将别名设置为,alias -- -='cd -'然后使用-(1个字符)而不是cd -(4个字符)。更快:D
ADTC '16

2
没有这个我怎么能过?
VSZM

1
@AndréKuhlmann您可以做cd -两次。难道cd /; cd /usr; cd -; cd -你应该在/usr。但也许我想念您的问题。
拉斐尔·阿伦斯

54

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

简而言之,如果您出于最终目的返回到起始位置而进入目录,请使用pushd/ popd

扩展示例

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

$ cd dir1
$ pushd dir2

此时,您的目录堆栈为dir2, dir1pushd不带参数运行将使您dir1现在回到堆栈dir1, dir2popd会做同样的事情,但是会留下一个空的目录栈。这与您使用cd -工作流的方式没有太大不同。

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

$ cd dir1
$ pushd dir2
$ cd dir3

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


2
您还可以堆叠目录,因此pushdpopd-ing时重复使用并返回到上一个文件夹。
2013年

1
当然。我几乎放了一个大示例,其中包括使用来检查堆栈dirs -v,但对我而言,现实情况是,通常情况下,这只是我真正使用的全部。(或者,更糟的是,在尝试push +2或类似的尝试时我犯了一个错误)此外,我还认为要让别人尝试工作流程的步骤很简单。:)
乔什·贝里

您如何cd在不弹出的情况下到达堆栈顶部?
乔恩·迪顿

18

您应该使用:

cd ~-

它的作用与cd -(根据当前接受的答案)相同,但没有目录的讨厌回声,并且比cd "$OLDPWD"或易于键入cd - > /dev/null


2
将echo重定向到null文件!天才!
2016年

2
回显将显示新目录,而不是前一个目录。而且我会发现它很有用,这样我就知道自己现在的位置,特别是如果我位于仅在提示符下显示当前目录名称(或根本不显示任何内容)的shell中,并且我也无动于衷地更改提示显示完整路径。当然,如果您的提示已经显示了完整路径,则回声将是多余且令人讨厌的。在这种情况下,我认为您可以尝试alias -- -='cd "$OLDPWD"'使用-(1个字符)而不是cd ~-(5个字符)。:)
ADTC '16

来源和解释:unix.stackexchange.com/a/330885/38213剧透,-是操作数,〜是路径别名。因此cd ~-/..有效,但cd -/..无效!
Ray Foss


3

您可以通过编辑“〜/ .bashrc”文件并为该命令添加别名来为“ cd-”“定义键”。例如,您可以添加“ cdc”使其成为“ cd-”,这将通过添加以下内容为您提供一种访问上一个目录的更短方法:

alias cdc='cd -'

这样,您只需键入“ cdc”,它将把您放在最后一个工作目录中。


5
当您使用没有该别名的系统时,请使您永无止境。节省了每隔一段时间键入一个字符的时间。为什么还要打扰?
CVn 2013年

2
“在终端机中,如何定义要转到先前目录的键 ”我从来不会感到困惑。它只是一个捷径,当您在另一个系统上时,只需使用长久的方法即可。
Atari911

@ Atari911很好的问题!这是答案:stackoverflow.com/questions/4200800这是我所做的(绑定F12):(bind '"\e[24~":"\C-k \C-ucd -\n"'或更优选地,将其移动到inputrc答案中提到的文件中)。
ADTC '16

1

cd ..转到文件夹树中的上一个文件夹。
cd -转到以前的文件夹。该命令在某些发行版(ubuntu 16.04)上不起作用,在debian 9中有效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.