使用 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 不會嘗試解釋它們。

相關內容