链接命令时隐藏终端输出

链接命令时隐藏终端输出

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

为了节省时间,我 (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 &

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

答案1

我往往看>/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.txt”。

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


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

答案2

快速回答:

gedit -b wallet.pem > /dev/null 2>&1

-b选项置于gedit后台。

较长的答案:

对于像这样的任务,我会将这些应用程序放在桌面环境的启动窗口中。

相关内容