链接命令时隐藏终端输出

som*_*his 3 command-line

从终端,我喜欢启动我的标准工作应用程序... gedit 与我的待办事项列表、firefox 和铬。

为了节省时间,我 (1) 将此命令链接到一行,(2) 使来自 stderr 和 stdout 的所有错误消息静音,2&>1 >/dev/null以及 (3) 后台进程&以重新获得干净的终端:

gedit ~/Desktop/todo.txt 2&>1 > /dev/null & firefox 2&>1 > /dev/null & chromium-browser 2&>1 > /dev/null &
Run Code Online (Sandbox Code Playgroud)

除了一个小细节外,它似乎工作正常。Gedit 打开 todo 文件以及名为 2 的新文本文件。管道是否放错了位置?

Rin*_*ind 5

我倾向于看到>/dev/null 2>&1而不是2>&1 >/dev/null

然后>可能是这里的关键,因为 gedit 的下一个选项是 (a) 文件名。

gedit 的手册页指出filename(s)

指定 gedit 启动时要打开的文件 - 如果未指定,gedit 将加载一个带有无标题标签的空白文件。如果多个文件以空格分隔,则可以加载多个文件。gedit 还支持处理远程文件。例如,您可以将网页的位置传递给 gedit,如“http://www.gnome.org”,或从 FTP 服务器加载文件,如“ftp://ftp.gnome.org/robots”。文本”。

如果我没看错的话:2 被视为文件名,因为它前面有一个空格。这表明您需要>告诉 gedit 它不是接下来的文件名。


我自己会创建一个脚本并将命令放在不同的行上。