我有一个输出目录的命令,我想 cd 进入该目录

我有一个输出目录的命令,我想 cd 进入该目录

我希望我能做到,cd | [my command]但它似乎cd无法通过管道工作。

我想简单地cd输入而不编写 bash 脚本之类的输出,[my command]我希望有一种简单的方法可以做到这一点。

答案1

在 POSIX shell 中:

cd -P -- "$(mycommand)"
  • $(cmd)命令替换。它扩展到标准输出cmd减去尾随换行符。
  • "$(cmd)"。如果没有引号,扩展将受到 split+glob 的影响,这是我们不希望的。
  • --将选项与参数分开。如果您知道 的输出mycommand不会以-nor开头+,则可以省略它。如果没有that输出我将被视为选项cd
  • cd是更改当前目录的命令。但是,如果没有-P,它可能不会更改为作为参数给出的目录(如果该目录包含..组件)。

或者你可以写cd $(mycommand).这会非常草率,但是只要 的输出mycommand不包含空格、制表符、换行符、、、*字符?[组件..并且不以-或开头,那么就可以工作+

现在我听到你问,我如何使用这些命令更改以换行符结尾的目录?

答案2

对于简单的情况:

cd `my command`

其中my command用反勾号括起来。

如果命令的输出包含“奇怪”的字符,则此方法不起作用。看斯特凡·查泽拉斯的回答更多细节。

相关内容