Kate

使用預設程序打開文件並等待應用程序終止

  • February 13, 2014

我想使用預設應用程序從命令行打開一個文本文件。在打開預設應用程序期間,必須禁用終端(無法執行其他命令)。例如,我使用 KDE 並且預設.txt閱讀器是 Kate,然後我想執行kate test.txt並且終端被禁用,直到我終止 Kate。

我想要的是?

  • 執行啟動預設文本編輯器的命令
  • 同時,c++ 程序正在等待執行上述命令的特定點
  • 當使用者準備好時,保存文件,退出預設文本編輯器(終止)並繼續執行 c++ 程序

系統上的預設文本編輯器通常儲存在$EDITOR環境變數中。例如,在我的系統上,我有:

$ echo $EDITOR
/usr/bin/emacs

所以,你可以簡單地執行

$ $EDITOR test.txt

注意:這不一定與圖形環境設置中定義的編輯器相同。使用下面的方法來獲得它。

xdg-open或者,如果系統配置為使用它,您可以使用(open在 OSX 上)啟動與 mime 類型關聯的預設程序:

$ xdg-open test.txt

但這在命令關閉之前不會保留終端。但是,您可以使用 mime 設置找出打開的程序,然後自己呼叫該程序。為此,請獲取與文本 mime 類型關聯的程序:

$ xdg-mime query default text/plain
pluma.desktop;sublime_text.desktop

因此,現在您可以解析該行以獲取程序名稱:

editor=$(xdg-mime query default text/plain | sed 's/\..*//')
$editor test.txt

注意:這假定該.desktop文件具有實際執行檔的名稱。一種更安全的方法可能是找到桌面文件本身並從中獲取執行檔。然後,啟動您找到的程序。您可以使用以下命令完成所有操作:

editor=$(grep -i ^exec $(locate -n 1 $(xdg-mime query default text/plain |
                       cut -d';' -f 1)) | 
          perl -pe 's/.*=(\S+).*/$1/') 
$editor test.txt

引用自:https://unix.stackexchange.com/questions/114224