当另一个命令的输出通过管道输出时,xdg-open不起作用

时间:2013-06-15 13:42:32

标签: bash pipe

假设我有一个名为file.ext的独特文件。 它由我的Ubuntu框索引,因此命令locate file.ext正确地给了我(单个)位置,比如/usr/local/some/place/file.ext

所以我想这个:

locate file.ext | xdg-open

将使用与文件类型关联的默认应用程序打开文件(有一个,这不是问题),就像我输入了xdg-open /usr/local/some/place/file.ext

相反,我得到来自xdg-open的“使用”消息,好像它是在没有参数的情况下调用的。

所以问题是:我对管道有什么不妥吗?或者这个特定命令有些问题吗?

1 个答案:

答案 0 :(得分:12)

因为你必须传递filename作为选项,而不是stdin上的数据。 使用xargs:

locate file.ext | xargs xdg-open

或只是子壳:

xdg-open "$( locate file.ext )"