我尝试了gedit, &, 的各种组合>/dev/null 2>/dev/null。当gedit与其他两个一起使用时,它总是向终端打印一些东西。

我知道这些数字是pid的。但是,请说明以下内容
gedit不打印任何内容?[1]+ Done意思?$ sleep 10 &
[1] 24446
$
[1]+ Done sleep 10
Run Code Online (Sandbox Code Playgroud)
的[1] 24446和[1]+ Done ...由外壳印刷。来自man bash:
When bash starts a job asynchronously (in the background), it prints a
line that looks like:
[1] 25647
Run Code Online (Sandbox Code Playgroud)
您可以Done通过禁用监视器模式来禁用输出:
set +m
Run Code Online (Sandbox Code Playgroud)
但是,您不能在交互式 shell 中禁用第一个表单。相反,尝试在子shell中运行:
$ (gedit &> /dev/null &)
$
Run Code Online (Sandbox Code Playgroud)
如果你使用它,后台进程不再受 shell 的作业控制。
一个旁注,&>可用于将 stdout 和 stderr 一起重定向。