我尝试过 、 、 的各种组合gedit
。&
当>/dev/null 2>/dev/null
与gedit
其他两个一起使用时,它总会在终端上打印一些内容。
我知道这些数字是 pid。但是,请解释以下
- 为什么当我将 stdout 和 stderr 重定向到 /dev/null 时会产生这些输出,而 bare
gedit
却不打印任何内容? - 这是什么
[1]+ Done
意思? - 如何防止这些输出?
答案1
$ sleep 10 &
[1] 24446
$
[1]+ Done sleep 10
和[1] 24446
由[1]+ Done ...
shell 打印。来自man bash
:
When bash starts a job asynchronously (in the background), it prints a
line that looks like:
[1] 25647
您可以Done
通过禁用监控模式来禁用输出:
set +m
但是,您无法在交互式 shell 中禁用第一种形式。相反,请尝试在子 shell 中运行:
$ (gedit &> /dev/null &)
$
如果使用此功能,后台进程将不再受 shell 的作业控制。
附注:&>
可以用于将 stdout 和 stderr 一起重定向。