如何防止 gio open 命令在控制台中输出文本?

如何防止 gio open 命令在控制台中输出文本?

gio open我经常使用该命令,因此我在 .bashrc 文件中为其添加了一个别名

alias open="gio open"

因此,我可以简单地写open .open ~/Pictures/example.png作为示例。

但是,我无法阻止烦人的输出,因为它默认 gio没有选项,在工作期间输出一些消息,例如:--quitegio open

msi@msi:~/Pictures$ open image-3.jpg 
msi@msi:~/Pictures$ 
(gthumb:37944): Gtk-WARNING **: 08:00:54.815: Failed to register client: GDBus.Error:org.gnome.SessionManager.AlreadyRegistered: Unable to register client

因此我发现有些人使用重定向运算符将命令的输出从标准输出(shell)重定向到,/dev/null因为写入此“设备”的所有内容都会直接自动删除。

你能帮忙吗?

答案1

抑制错误输出

应用程序的警告消息(在您的示例“gthumb”中)不会发送到标准输出,而是发送到stderr。您可以抑制这些消息,例如:

gio open image-3.jpg 2>/dev/null

别名为

alias open='gio open 2>/dev/null'

将努力自动化别名中的这一方面。

抑制所有输出

为了消除所有输出,将文件描述符 1 ( stdout) 和 2 ( stderr) 重定向至/dev/null

gio open image-3.jpg 1>/dev/null 2>/dev/null

以下具有相同的效果,但只允许您指定一次最终目标:

gio open image-3.jpg >/dev/null 2>&1

stdout重定向到/dev/null,并stderrstdout,变成/dev/null1由于这是默认输出,因此可以省略。

Bash 和其他 shell 也允许这种快捷方式:

gio open image-3.jpg &>/dev/null

相关内容