web-dev-qa-db-ja.com

端末コマンドを使用してUbuntuメニュー項目にアクセスするにはどうすればよいですか?

特定のメニュー項目(アクセサリー/ユーティリティや教育など)にあるすべてのデスクトップファイルを取得してから、それらのいずれかを実行するbashスクリプトを実行する必要があります。これを行うには、どのターミナルコマンドを使用できますか?

1
tristo

.desktopファイルは、/usr/share/applications/(システム全体)または~/.local/share/applications(ユーザーごと)の下にあります。分類は、ファイルの「Categories」プロパティを設定することによって行われます。これは、メニューに表示されるものと正確に同じではない場合があるため、最初に正しいカテゴリ名を見つける必要があります。私のメニューには「ビュロ」というカテゴリがあります。これはドイツ語で「オフィス」を意味し、qpdfviewのランチャーが含まれています。 .desktopファイルの「Categories」行を確認するには、次のコマンドを実行します:

$ grep Categories /usr/share/applications/qpdfview.desktop 
Categories=Viewer;Office;

これはプログラムの2つのカテゴリを示しているため、.desktopファイルでは「Office」と呼ばれています。 「Office」で分類されたすべての.desktopファイルのリストを取得するには、-lフラグを使用してgrepを再度使用し、一致しないファイル名のみを表示します。

$ grep -l Categories.*Office /usr/share/applications/*
/usr/share/applications/evince.desktop
/usr/share/applications/evince-previewer.desktop
/usr/share/applications/gnucash.desktop
/usr/share/applications/libreoffice-base.desktop
/usr/share/applications/libreoffice-calc.desktop
/usr/share/applications/libreoffice-draw.desktop
/usr/share/applications/libreoffice-impress.desktop
/usr/share/applications/libreoffice-math.desktop
/usr/share/applications/libreoffice-startcenter.desktop
/usr/share/applications/libreoffice-writer.desktop
/usr/share/applications/qpdfview.desktop

これがオフィスプログラムのリストです。今すぐそれらを実行するには、単にxdg-openを使用します。例:

xdg-open /usr/share/applications/qpdfview.desktop

xdg-openがシステムで機能しない場合は、ファイルから開始コマンドを抽出して直接実行することもできます。例:

exec $(grep -Po 'Exec=\K[^ ]*' /usr/share/applications/qpdfview.desktop)

あなたまたはスクリプトのユーザーが実行するプログラムをどのように選択するべきかについての情報を提供しなかったので、そのためのリンクをいくつか紹介します。

スクリプトで簡単に処理できるようにファイル名を配列に保存するのは、次のように簡単です。

options=("$(grep -l Categories.*Office /usr/share/applications/*)")
0
dessert