使用 xdg-open 以新进程打开 url

使用 xdg-open 以新进程打开 url

我开始尝试嘎吱嘎吱(它基于 Debian,并使用终结者) 作为一个 Web 开发环境,我正在努力解决的问题之一是xdg-open.我有 OSX 背景,所以如果这个问题听起来很复杂,请原谅我。

我希望能够打开一个 url,xdg-open http://www.google.com然后继续使用相同的终端窗口来工作(这就是openOSX 中的功能)。现在,使用xdg-open占用当前选项卡/会话,直到我关闭浏览器窗口,或者使用 手动结束ctrl + c。我更希望它启动一个新进程,这样我就可以打开一个 URL,引用页面上的数据,并在同一个选项卡/窗口中使用它,而无需打开另一个选项卡/窗口。

答案1

奇怪的是,它在我的 Debian 上开箱即用。尝试在后台运行它:

xdg-open http://www.google.com &

您可以通过将以下行添加到~/.bashrc文件中来将其变成一个函数:

function open () {
    xdg-open "$*" &
}

然后您只需运行即可open http://www.google.com,它将在后台运行。

答案2

如果您想将进程从当前 shell 中分离出来,而不是将其作为后台作业启动xdg-open http://www.google.com &,我喜欢detach公用事业:

detach xdg-open http://www.google.com

人们可以为此创建一个别名。我喜欢detachover nohupas 默认关闭 stdin、stdout 和 stderr,这样它的调用就更干净。

答案3

xdg-open等待程序完成。这是设计使然。如果程序是文本模式程序,则它必须保留在终端的前台。即使程序是 GUI 程序,如果xdg-open从脚本使用并且脚本想要在文件编辑后执行某些操作(例如,将新版本发送到某处或以其他方式使用新版本进行某些操作),则此行为很有用。

如果您不想等待,请xdg-open在后台运行。您可以通过在末尾添加“&”号来在后台运行任何 shell 命令。

xdg-open http://www.google.com &

对于某些程序,xdg-open会立即返回。实际上发生的情况是调用的程序xdg-open立即返回。这种情况通常发生在在单个实例中打开所有文件的 GUI 程序中:当您第二次启动它们时,它们会向正在运行的实例发送一条消息,告诉它打开文件,并立即退出。

答案4

尝试这个:

DISPLAY=:0.0; xdg-open '<url>'

我使用这种技术将 Magnet:// URL 排入我的 Bit Torrent 客户端 Vuze 中。

ssh someserver "DISPLAY=:0.0; xdg-open 'http://www.google.com/'"

单引号有助于保护 URL 的内容,以便 shell 不会尝试解释它们。

相关内容