在 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/null1> /dev/null 相同,这意味着您可以执行 >/dev/null 2>/dev/null1>/dev/null 2>/dev/null 以获得相同的效果。

对于作业终止输出,你可以wrap your command in parenthesis这样:

(feh "image.jpg" > /dev/null 2>&1 & echo "Second command" )

如链接 post 中所述,请注意,这会使您失去对使用 & 返回的进程的控制。