自分のシステムについてもっと知りたいと思っています。たとえば、GUI アプリケーション「印刷」を起動しました。タイトルに素敵な名前が付いています。
/usr/bin に「printing」ファイルはありません。
「printing」の代わりに、たとえば「printgui」のように、ファイルシステム内のアプリケーションの実際の名前を表示するトリックはありますか?
答え1
通常、GUIアプリケーションは「ランチャー」を通じて起動されます。つまり、。デスクトップファイル。メニューに「印刷」と表示されていますが、これはアプリケーションの「一般名」であるためです (詳細は投稿したリンクを参照)。使用している DE によっては、メニュー エントリを右クリックして または を選択すると、実行可能パスと、場合によってはそのアプリケーションの実行可能パスが表示されることがありますEdit
。Properties
これは Gnome 3 などの DE では不可能なので、DE に関係なく機能するソリューションを次に示します。
.desktop
ファイルは/usr/share/applications
、単にgrep
-ingで配置されていますGenericName=印刷その文字列を含むランチャーを少なくとも 1 つリストする必要があります。
たとえば、私のシステムには「印刷」はありませんが、「テキスト エディター」はあります。アプリケーション/実行可能ファイルの実際の名前を知りたいので、次のコマンドを実行します。
grep "GenericName=Text Editor" /usr/share/applications/*
出力は次のようになります:
/usr/share/applications/gedit.desktop:GenericName=Text Editor
したがって、「テキスト エディター」の「ランチャー」は です/usr/share/applications/gedit.desktop
。ここで、「テキスト エディター」の実際の名前と実行可能ファイルを知るには、Name
と の2 つのキーの値を grep する必要がありますExec
。
grep -E '(^Name=|^Exec=)' /usr/share/applications/gedit.desktop
出力は次のようになります:
Name=gedit
Exec=gedit %U
実行可能ファイルの完全なパスについては、以下を実行するだけです。
which gedit
そして次の結果が返されます:
/usr/bin/gedit
答え2
上記の回答をスクリプトに転記しました実行CmdGnome3.sh以下に示します。このユーティリティを使用して、gnome シェル名がわかっているアプリケーションをターミナルから呼び出す方法を調べます。
#!/bin/bash
#
# Name: execCmdGnome3.sh
# Usage e.g.: sudo execCmdGnome3.sh "Document Viewer"
# Output: Found Launcher: "evince.desktop"
# Name=Document Viewer
# Exec=evince %U
launcher=`grep "$1" /usr/share/applications/* | sed s/.*applications.// | sed s/:.*// | uniq`
echo "Found Launcher: \"$launcher\""
grep -E '(^Name=|^Exec=)' "/usr/share/applications/$launcher"