特定のファイル拡張子に関連付けられたプログラムをプログラムで取得するにはどうすればよいですか?

特定のファイル拡張子に関連付けられたプログラムをプログラムで取得するにはどうすればよいですか?

たとえば、手動の GUI を使用せずに、特定のファイル拡張子を持つファイルを開くものを確認するにはどうすればよいでしょうか.rb

重複ではありませんファイルの関連付けをグローバルに変更するにはどうすればよいですか?私の場合は、プログラム的に読み取るもので、GUIによる手動操作を含め、いかなる変更も行いません(ただしhttps://askubuntu.com/a/289339/349903いくつかの設定ファイルを解析すると答えが得られるかもしれないというヒント)

XY 問題を回避するには: システム インストール スクリプトがあり、Okular がテキスト エディターではなく.rb、、、およびその他のテキスト ファイルに関連付けられて終了することを除いて正常に動作します。インストール スクリプトを再実行し、各ステップの後に特定のファイル拡張子を開いているもの.py.txtログに記録します。これにより、何が問題なのかをデバッグできるようになることを願っています。

答え1

上記のコメントをまとめると、この問題の答えは次の 2 つのステップになります。

まず、ファイルの MIME タイプを決定します。

MIMETYPE=$(xdg-mime query filetype "<your-file-here>")

次に、このタイプに関連付けられているデフォルトのアプリケーションを取得します。

xdg-mime query default "$MIMETYPE"

つまり、MIMEタイプはテキスト/x-python例えば、アプリケーションは次のようになりますgedit.デスクトップ私のシステムでは。

これをワンライナーにすることもできます:

xdg-mime query default "$(xdg-mime query filetype '<your-file-here>')"

関連情報