改变xdg-open的行为

问题描述:

我在Ubuntu Linux终端中使用命令xdg-open相当多。然而,有两件事情使我感到厌烦:改变xdg-open的行为

  1. 是否可以抑制错误信息?

  2. 是否可以让命令始终完成? (也就是说,不能继续运行,这样我的终端就会有另一个“新线路”)。

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

第一个很容易。只需要

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 & 

我可能迟到的答案,但我得到了完全相同的问题,如你有/有。

我试图启动一个URL XDG开,我的默认浏览器是火狐,而不是XDG开但Firefox开始与一个错误:

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

# needed to press enter here 

XDG-开闭正常,但Firefox的错误留我需要按回车让bash移动。而什么也没有 -

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

页打开的细,没有显示任何错误:


沿着这个问题,我叫一个新的外壳把这些输出到/ dev/null的内XDG开得所示。并且不需要按下输入。