我在我的 Ubuntu Linux 终端中经常使用命令 xdg-open。然而,有两件事让我感到厌烦:
是否可以抑制错误消息?
是否可以让命令始终完成?(也就是说,不要继续运行,这样我的终端中就会有另一个“新行”)。
我意识到 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 &
I maybe late for the answer, but I got exactly the same problem like you have / had.
I tried to start a URL with xdg-open, my default browser is firefox, and not xdg-open but firefox started with an error:
[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 closed fine but the firefox error stayed and I need to press enter to get the bash moving.
To get along this problem I called xdg-open within a new shell putting those output to /dev/null:
bash -c "xdg-open https://www.google.de" 2> /dev/null
The page opened fine, no error shown – rather nothing has been shown. And no need to press enter.