为什么我无法在 macOS 上通过管道将 `pwd` 传递给 `open`?

为什么我无法在 macOS 上通过管道将 `pwd` 传递给 `open`?

这是 macOS 特有的,但似乎太 unixy 了,无法进入提出不同的要求社区。

在终端中,我可以pwd复制结果,然后键入open并粘贴结果,文件夹将在 Finder 中打开,但是

pwd | open

打印 的帮助文档open。为什么管道不起作用但粘贴可以?

答案1

macOS 上的实用程序open不从标准输入读取,而是从命令行获取参数。

要打开当前工作目录,你必须说

$ open "$( pwd )"

或者

$ open "$PWD"

或者简单地

$ open .

正如下面的评论所指出的。

使用该-f标志,open可以从标准输入读取,但只能打开在默认文本编辑器中收到的任何内容。

答案2

我没有 Mac,所以无法测试,但解决方案应该是这样的:

open "`pwd`"

stdin并非所有程序都会获取管道工作所需的输入。

答案3

pwd | xargs open

xargs将其标准输入推入其第一个参数的参数中。

答案4

您可以使用管道-f在文本编辑器中打开上一个命令的内容。这仅适用于文本编辑器。对于其他应用程序,您需要使用其他问题中的建议。

例如:

ls | open -f

这将打开带有输出内容的默认文本编辑器ls

您还可以使用以下命令指定要使用的文本编辑器-a

ls | open -a 'Atom' -f

这将打开 Atom 并ls输出内容。

相关内容