在 Linux 终端中抑制 & 的输出
Suppress output from & in Linux terminal
我从多个帖子中看到了关于将输出从程序发送到 /dev/null
以及使用 2>&1
抑制错误输出的答案,但是我如何使用所有这些并抑制输出通过键入 &
符号将其发送到后台进程?
示例:
feh "image.jpg" & >/dev/null 2>&1
仍然returns“[#] {PID}”(当然是填入数字)。如果有人能帮助我,将不胜感激。
我正在使用 Manjaro Linux 我的内核版本是 5.11.10-1-MANJARO
一旦遇到&
,第一个命令(feh "image.jpg"
)发送到后台,然后shell单独执行>/dev/null 2>&1
,这样单独执行什么也没做。在将进程发送到后台之前,您需要设置输出 pipes/redirection:
feh "image.jpg" > /dev/null 2>&1 & echo "Second command"
请注意 > /dev/null
与 1> /dev/null
相同,这意味着您可以执行 >/dev/null 2>/dev/null
或 1>/dev/null 2>/dev/null
以获得相同的效果。
对于作业终止输出,你可以wrap your command in parenthesis这样:
(feh "image.jpg" > /dev/null 2>&1 & echo "Second command" )
如链接 post 中所述,请注意,这会使您失去对使用 &
返回的进程的控制。
我从多个帖子中看到了关于将输出从程序发送到 /dev/null
以及使用 2>&1
抑制错误输出的答案,但是我如何使用所有这些并抑制输出通过键入 &
符号将其发送到后台进程?
示例:
feh "image.jpg" & >/dev/null 2>&1
仍然returns“[#] {PID}”(当然是填入数字)。如果有人能帮助我,将不胜感激。
我正在使用 Manjaro Linux 我的内核版本是 5.11.10-1-MANJARO
一旦遇到&
,第一个命令(feh "image.jpg"
)发送到后台,然后shell单独执行>/dev/null 2>&1
,这样单独执行什么也没做。在将进程发送到后台之前,您需要设置输出 pipes/redirection:
feh "image.jpg" > /dev/null 2>&1 & echo "Second command"
请注意 > /dev/null
与 1> /dev/null
相同,这意味着您可以执行 >/dev/null 2>/dev/null
或 1>/dev/null 2>/dev/null
以获得相同的效果。
对于作业终止输出,你可以wrap your command in parenthesis这样:
(feh "image.jpg" > /dev/null 2>&1 & echo "Second command" )
如链接 post 中所述,请注意,这会使您失去对使用 &
返回的进程的控制。