Kate
使用預設程序打開文件並等待應用程序終止
我想使用預設應用程序從命令行打開一個文本文件。在打開預設應用程序期間,必須禁用終端(無法執行其他命令)。例如,我使用 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