【问题标题】:Alter Behavior of xdg-open改变 xdg-open 的行为
【发布时间】:2014-01-13 05:29:28
【问题描述】:

我在 Ubuntu Linux 终端中经常使用命令 xdg-open。然而,有两件事让我感到厌烦:

  1. 是否可以隐藏错误消息?

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

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

【问题讨论】:

    标签: linux terminal xdgutils


    【解决方案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 &
    

    【讨论】:

      【解决方案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
      

      页面打开正常,没有显示错误——而是没有显示任何内容。而且不需要回车。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-24
        • 1970-01-01
        • 2014-09-01
        • 2014-03-09
        • 1970-01-01
        • 2022-10-06
        • 2022-07-08
        • 2023-03-17
        相关资源
        最近更新 更多