Blu*_*303 1 linux debian terminal shell
如何返回到 Linux shell 上使用的最后一个目录?
例如:我打开一个新的 shell(或在不同的控制台 shell 中登录),然后我写:
root@vignesh : cd /root/Desktop
Run Code Online (Sandbox Code Playgroud)
这会将我定向到/root/Desktop目录(如果我可以访问它)
root@vignesh:~/Desktop#
Run Code Online (Sandbox Code Playgroud)
我现在怎样才能回到上一个目录?
是否有任何命令可以返回到我使用的最后一个目录?
我是否需要再次使用该cd命令返回上一个目录?
cd -cd - 将带您到先前使用的目录(如果有),否则会产生错误。
如果以前使用的目录存在,它将在那里更改,更新当前工作目录和前一个工作目录的值,返回成功退出状态 ( 0)。
否则,它将打印一条错误消息并返回一个退出状态 ( 1)。
自己检查一下cd -; echo $?。
当您在脚本中使用它时,退出状态将变得很重要。
与 0 不同的退出状态可以停止整个脚本的执行(如果有set -e),或者,最糟糕的是,可以导致cd -命令的退出点,与您在编写脚本和执行命令时所想的不同在错误的目录中:假设您从 dir0 开始;更改为 dir1 后,无法更改为 dir2。现在你执行一个cd -. 您认为在 dir1 中,但实际上您在 dir0 中……从这里开始,一切都掌握在 Fate 手中。
cd $OLDPWD(或cd $owd)cd是所有 shell 的内部命令(所有,从 开始sh)。
在 下dash,bash它将为当前和旧工作目录设置变量PWD, OLDPWD。在cshand下,tcsh它将设置为cwdand owd。
所以用命令cd $OLDPWD的庆典或cd $owd在tcsh中如果存在的话,或者你的,你会被带到老的工作目录的主目录,如果这个变量没有设置。如果您有权访问您的主目录(1),
退出代码将始终0为。
pushd将一个目录添加到堆栈并popd从堆栈中删除一个。一个优点cd -是您可以选择何时返回签名目录,而不会被迫返回到最后一个。另一个优点是您可以堆积多个目录并决定跳转到哪个目录。help pushd以及help popd有关这些内置命令的信息。
笔记:
写入cd $NotAlreadySetVariable相当于完全cd不带参数的写入,这会将您带到您的主目录。准确地说,它会将您带到$HOME(for bash,dash...) 或$home(for csh,tcsh...) 中的目录。如果此目录不存在或不可访问,您将收到错误消息。如果$HOME(or $home) 为空,您将保留在当前目录中,不会产生错误,并且$OLDPWD(or $owd) 值将设置为当前目录。
的$OLDPWD,$owd当你想使用以前的目录作为参数的命令变量可以是有用的。例如,您想将所有文件从当前目录移动到旧目录:mv * $OLDPWD.
小事
要注意的man bash是,在PWD的定义使用当前的工作目录(CWD),而不是像当前工作目录(PWD)...
PWD The logical value of the current working directory.
This is set by the cd command.
OLDPWD The previous logical value of the current working directory.
This is set by the cd command.
HOME The home directory of the current user; the default argument for
the cd builtin command. The value of this variable is also used when
performing tilde expansion.
Run Code Online (Sandbox Code Playgroud)
从 man tcsh
cd和pushd将“-”解释为旧的工作目录(相当于 shell 变量 owd)。这根本不是替换,而是仅由那些命令识别的缩写。尽管如此,它也可以通过引用来防止。