执行command1时如何让command2等待command1退出 |命令2?
How do you make command2 wait for command1 to exit when executing command1 | command2?
我正在尝试将 dmenu 的输出通过管道传输到 surf(浏览器)以便浏览选定的 URL。我在做:
cat ~/.surf/bookmarks | dmenu | surf
但是在我选择的 URL 退出 dmenu 之前冲浪就开始了。这意味着它不会以正确的 URL 打开。我看不出问题是什么,因为 dmenu 在做出选择后将 URL 打印到标准输出,而 surf 以 URL 作为其参数。澄清一下,书签文件只包含 URL 分行。
我在 i3 中使用它作为绑定符号。我也试过
surf (cat ~/.surf/bookmarks | dmenu)
fish shell 语法,因为那是我的 shell。
提前致谢。
如 tkauusl 的评论中所述,surf
应该将 URL 作为命令行参数,而不是通过管道传输到 stdin
.
对于 bash
和 POSIX 兼容的 shell,您可以使用以下语法:
surf $(cat ~/.surf/bookmarks | dmenu)
对于其他 shell,您可能必须使用
surf `cat ~/.surf/bookmarks | dmenu`
如果URL可以包含空格,你应该引用命令替换的结果。
surf "$(cat ~/.surf/bookmarks | dmenu)"
我正在尝试将 dmenu 的输出通过管道传输到 surf(浏览器)以便浏览选定的 URL。我在做:
cat ~/.surf/bookmarks | dmenu | surf
但是在我选择的 URL 退出 dmenu 之前冲浪就开始了。这意味着它不会以正确的 URL 打开。我看不出问题是什么,因为 dmenu 在做出选择后将 URL 打印到标准输出,而 surf 以 URL 作为其参数。澄清一下,书签文件只包含 URL 分行。
我在 i3 中使用它作为绑定符号。我也试过
surf (cat ~/.surf/bookmarks | dmenu)
fish shell 语法,因为那是我的 shell。 提前致谢。
如 tkauusl 的评论中所述,surf
应该将 URL 作为命令行参数,而不是通过管道传输到 stdin
.
对于 bash
和 POSIX 兼容的 shell,您可以使用以下语法:
surf $(cat ~/.surf/bookmarks | dmenu)
对于其他 shell,您可能必须使用
surf `cat ~/.surf/bookmarks | dmenu`
如果URL可以包含空格,你应该引用命令替换的结果。
surf "$(cat ~/.surf/bookmarks | dmenu)"