'cd' 在上一个目录和当前目录之间来回切换

'cd' 在上一个目录和当前目录之间来回切换

我发现cd -可以在上一个目录和当前目录之间来回切换,这是一个非常方便的功能。还发现cd --也可以使用,但不确定具体是做什么用的。有没有参考资料介绍这个?请指教,谢谢。

答案1

编辑:

我不清楚您指的是 cd --还是cd -- -。因此,我会尝试回答这两个问题。

cd --(无目录)的作用与cd(无目录)相同。您将返回到主目录。cd --不会将您切换回上一个工作目录。

stefanl@host:~ $ cd tmp
stefanl@host:~/tmp $ cd --
stefanl@host:~ $ cd --
# Note that I do not go back to the directory ~/tmp
stefanl@host:~ $

看看这种行为与 有何不同cd -。 这也适用于cd -- -

stefanl@host:~ $ cd tmp
stefanl@host:~/tmp $ cd -
/Users/stefanl
stefanl@host:~ $ cd -
/Users/stefanl/tmp

# `cd -- -` behaves the same as `cd -`
stefanl@host:~/tmp $ cd -- -
/Users/stefanl
stefanl@@host:~ $ cd -- -
/Users/stefanl/tmp
stefanl@host:~/tmp $

--对于大多数 Unix 命令来说:

--告诉cd忽略 之后的任何选项cd --。从Bash 手册页

除非另有说明,每个记录为接受以“-”开头的选项的内置命令都会接受“--”来表示选项的结束。

假设您有一个名为(请注意,我也-h需要在这里使用):--

$ ls -ld -- -h
drwxr-xr-x  2 stefanl  stefanl  68 Nov  8 16:41 -h

您无法正常地 cd 到此处,因为该命令会尝试将其解释-h为一个选项:

$ cd -h
-bash: cd: -h: invalid option
cd: usage: cd [-L|-P] [dir]

因此使用 来--告诉 cd 不要在 之后处理任何其他选项--

stefanl@host:~ $ cd -- -h
stefanl@host:~/-h $ pwd
/Users/stefanl/-h
stefanl@host:~/-h $

答案2

上一目录也是cd ~-

取决于你的 shell,但请检查dirs内置命令(zsh在这种情况下是我的):

[iluvatar]-[/srv/django]-[1126] % dirs -v
0       /srv/django
1       /srv/django/app
2       /srv/django/app2
3       ~

然后,您可以使用cd ~N快捷方式更改目录,以及pushdpopd更改堆栈。

答案3

我不知道这个问题的确切答案,但从我的推断来看, 似乎被--解释为参数的前身。由于没有传递参数,它会被忽略,因此默认为cd,这会将您带到您的主目录。

这似乎发生在一些标准实用程序中:
[james@aladdin blah]$ pwd
/home/james/blah
[james@aladdin blah]$ touch hello
[james@aladdin blah]$ ls -
ls: cannot access -: No such file or directory
[james@aladdin blah]$ ls --
hello
[james@aladdin blah]$ rm -
rm: cannot remove '-': No such file or directory
[james@aladdin blah]$ rm --
rm: missing operand
Try 'rm --help' for more information.

相关内容