我发现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
快捷方式更改目录,以及pushd
和popd
更改堆栈。
答案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.