![如何从终端分离管道命令?](https://linux22.com/image/231181/%E5%A6%82%E4%BD%95%E4%BB%8E%E7%BB%88%E7%AB%AF%E5%88%86%E7%A6%BB%E7%AE%A1%E9%81%93%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我希望允许主要程序以标准方式运行,并在图形应用程序启动后从终端分离。在此示例中,fzf
从文件中读取路径,将选定的文件和文件夹提供给mpv
媒体播放器:
fzf < paths.txt | mpv --playlist=-
When&
添加到命令中fzf
永远不会以交互方式启动:
fzf < paths.txt | mpv --playlist=- &
虽然mpv
有一个--terminal=no
标志,它只是禁用终端输入和输出,仍然保留附加的 mpv 进程。
[...] 禁用终端和 stdin/stdout/stderr 的任何使用。这完全消除了任何消息输出。
与 --really-quiet 不同,这也会禁用输入和终端初始化。
答案1
当您将 放在&
命令后面时,它适用于整个命令,而不仅仅是第二部分。
如果您只想在后台运行最后一部分,您可以这样做:
fzf < paths.txt | { mpv --playlist=- & }
mpv
请注意,由于我找不到原因,这不会添加到 shell 作业列表中。但它似乎适合您的用例。