正如在这个很好的答案中所提到的,POSIX 系统cd
除了内置的 shell 之外还有一个外部二进制文件。在 OS X 10.8 上,它是/usr/bin/cd
. 您不能像内置函数那样使用它,cd
因为它在更改自己的工作目录后立即退出。它的目的是什么?
我试图cd
接受从另一个命令重定向到它的目录名称。这些方法都不起作用:
$ echo $HOME | cd
$ echo $HOME | xargs cd
Run Code Online (Sandbox Code Playgroud)
这确实有效:
$ cd $(echo $HOME)
Run Code Online (Sandbox Code Playgroud)
为什么第一组命令不起作用,还有其他命令也会以这种方式失败吗?
我试图cd
进入一个名为-
我为实验而创建的目录。我不能从 Bash。我怎么cd进去?
使用 Ubuntu 13.10 上的 Nautilus,我可以轻松地做到这一点,甚至可以毫不费力地在其中创建文件。我做了谷歌搜索,这是我得到的。这涵盖了目录以, like开头的情况,但不包括整个名称为一个的情况。即使我也无法从 Nautilus 中删除它。-
-test
-
rm
cat test.txt >-
将文本从 复制test.txt
到名为 的文件中-
,但cat - >test2.txt
会执行正常情况下的操作,即从stdin
into复制输入test2.txt
,而不是从文件 中复制输入-
。
为什么 Nautilus 没有这个问题,而 bash 呢?
我有一个名为-
.
我想显示它的内容。
一种方法是做
cat ./-
Run Code Online (Sandbox Code Playgroud)
因为cat -
从标准输入读取。但是,为什么cat "-"
和cat '-'
还解释由shell作为cat -
?