改变xdg-open的行为

时间:2014-01-13 05:29:29

标签: linux terminal xdgutils

我在Ubuntu Linux终端中使用了命令xdg-open。然而,有两件事让我烦恼:

  1. 是否可以取消错误消息?

  2. 是否可以让命令始终完成? (也就是说,没有继续运行,所以我的终端中有另一条“新线路”)。

  3. 我意识到2可能不可能,因为程序的工作方式,但我想1是。

2 个答案:

答案 0 :(得分:5)

第一个很容易。刚

alias xdg-open="xdg-open 2>/dev/null"

如果你想永久地想要它,只需将该行添加到〜/ .bashrc文件。

但是,如果你想对错误视而不见,我建议你三思而行。

第二个对我很困惑。 xdg-open不应该是互动的。在我的计算机(Debian sid)中,xdg-open执行命令并结束,即使命令本身尚未结束(即:您尚未关闭为URL打开的应用程序)。我认为这应该是xdg-open在任何平台上的行为(它应该在任何XDG系统上以完全相同的方式运行,这就是它的目的)。

无论如何,对于在shell中启动的任何命令,如果您希望它是非交互式的,即,即使前一个命令尚未完成也允许输入命令,您只需附加“&”到最后。例如:

# prompt is not shown until you close the calculator
$ gnome-calculator
# prompt is shown right after opening calculator and you can 
# work on the shell even if you don't close it
$ gnome-calculator &

答案 1 :(得分:2)

我的答案可能已经很晚了,但我遇到的问题和你的问题完全一样。

我尝试使用xdg-open启动一个URL,我的默认浏览器是firefox,而不是xdg-open但firefox启动时出现错误:

[user@user-pc ~]$ xdg-open https://www.google.de # the page opens fine, but firefox had an error
[user@user-pc ~]$ 
(process:3783): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed

# needed to press enter here

xdg-open关闭罚款,但firefox错误仍然存​​在,我需要按Enter键才能让bash移动。


为了解决这个问题,我在一个新的shell中调用xdg-open,将这些输出放到/ dev / null:

bash -c "xdg-open https://www.google.de" 2> /dev/null

页面打开正常,没有显示错误 - 没有显示任何内容。而且无需按回车。