如何找出Linux上正在運行的GUI應用程式的名稱和路徑?

如何找出Linux上正在運行的GUI應用程式的名稱和路徑?

我有興趣了解有關我的系統的更多資訊。啟動 GUI 應用程式“列印”等。標題中的一個閃亮好聽的名字。

/usr/bin 中沒有檔案「列印」。

是否有一些技巧可以在檔案系統中顯示應用程式的真實名稱而不是“列印”,例如“printgui”?

答案1

通常GUI應用程式是透過「啟動器」啟動的,即文件。您在選單中看到“列印”而不是真實姓名,因為這是應用程式的“通用名稱”(詳細資訊在我發布的連結中)。根據您使用的 DE,您也許可以右鍵單擊選單項目並選擇Edit或 ,Properties這將允許您查看可執行路徑,有時甚至是該應用程式的真實名稱。這在像 Gnome 3 這樣的桌面環境中是不可能的,所以這裡有一個無論你的桌面環境如何都應該有效的解決方案。

.desktop檔案位於/usr/share/applications如此簡單的grep-ing forGenericName=列印應列出至少一個包含該字串的啟動器。

例如,我的系統上沒有“列印”,但有“文字編輯器”。我想知道應用程式/可執行檔的真實名稱,所以我運行:

grep "GenericName=Text Editor" /usr/share/applications/*

其輸出:

/usr/share/applications/gedit.desktop:GenericName=Text Editor

所以「文字編輯器」的「啟動器」是/usr/share/applications/gedit.desktop。現在,為了知道「文字編輯器」的真實名稱和可執行文件,我必須 grep 兩個鍵的值:NameExec

grep -E '(^Name=|^Exec=)' /usr/share/applications/gedit.desktop 

其輸出:

Name=gedit
Exec=gedit %U

對於可執行檔的完整路徑,這只是運行的問題:

which gedit

返回:

/usr/bin/gedit

答案2

我將上面的答案轉入腳本中execCmdGnome3.sh如下圖所示。我使用這個實用程式來了解如何從我知道 gnome shell 名稱的終端呼叫應用程式。

#!/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"

相關內容