題 如何知道UI單擊的相應命令行cmd?


我可以從Ubuntu的GUI中點擊“電影播放器”,但我怎麼知道相應的命令行cmd。我想從命令行運行電影播放器。

這不僅僅是關於電影播放器的後台命令,我想知道當我點擊菜單上的一個圖標時x-window shell運行的所有實際命令。

非常感謝。


4
2018-05-21 05:16


起源


你說“Ubuntu的GUI”,但你是在考慮Gnome(Ubuntu的默認GUI),還是KDE(For Kbuntu)或XFCE(xubuntu)。每個GUI的答案都不同。 - Stefan Lasiewski
@stefan:我們假設,基於標籤,用戶正在尋找基於Xubuntu / XFCE的解決方案。 (是的,那些標籤是由其他人添加的,但這是基於對以下其中一個答案的評論。) - quack quixote


答案:


打開控制台並輸入

ps --sort start_time x

這應該為您提供一個活動進程列表,按開始時間排序,最近的進程在底部。例如,我剛剛啟動了Firefox,並得到了這個:

19713 ?        S      0:00 /bin/sh /usr/lib/firefox-3.6.3/firefox
19718 ?        S      0:00 /bin/sh /usr/lib/firefox-3.6.3/run-mozilla.sh /usr/lib/firefox-3.6.3/firefox-bin
19722 ?        Sl     0:01 /usr/lib/firefox-3.6.3/firefox-bin
19737 pts/2    R+     0:00 ps --sort start_time x

當然 ps --sort start_time x 始終是最近的過程。


6
2018-05-21 17:57



IIRC進程可以在運行時更改此描述。 - Maciej Piechotka
要僅顯示最近執行的10個進程, -start_time 和頭部可以使用: ps --sort -start_time x | head - Trey Hunner
@Maciej這是真的,但大多數流程都沒有。 - Kevin Panko


右鍵單擊圖標,然後選擇“屬性”。在大多數情況下,這將告訴您與之關聯的命令行。


4
2018-05-21 06:36



這適用於Gnome(Ubuntu的標準桌面管理器),但它不適用於所有桌面管理器。 - stib
我正在使用Xubuntu,右鍵單擊運行該程序。 - smwikipedia
即使在Gnome中,這僅適用於面板或桌面上的程序啟動器。它在菜單中不起作用。 - quack quixote
對於菜單(在Gnome中),有一個菜單編輯器可以查看單擊時運行的命令。只需右鍵單擊並選擇“編輯菜單”,然後導航到該項並檢查其命令行。 - chronos


Ubuntu的三個主要GUI是Gnome,KDE,Xfce。這些項目都試圖遵循freedesktop.org上的免費桌面標準。 Xfce似乎遵循了 桌面輸入 standard,定義菜單項的處理方式等。

以下說明適用於Gnome,KDE和Xfce。

菜單項(也稱為“啟動器”或“桌麵條目”存儲在 /usr/share/applications

你知道這個應用程序叫做“電影播放器”,所以要找到合適的文件,請執行以下操作:

stefanl@HOST:/usr/share/applications $ grep -i "movie player" *.desktop
totem.desktop:Name=Movie Player

Grep告訴我'totem.desktop'包含適當的內容。由此,我知道“電影播放器”與“圖騰”應用程序相關聯。

現在,要查看此菜單項執行的命令,請搜索 Exec

stefanl@HOST:/usr/share/applications $ grep Exec totem.desktop 
Exec=totem %U

freedesktop.org進一步描述了這些Gnome / KDE / Xfce .desktop文件的格式 桌面入口規範。該 桌麵條目規範:Exec密鑰 描述了使用 %U 鍵:

URL列表。每個URL作為單獨的參數傳遞給可執行程序。本地文件可以作為文件傳遞:URL或文件路徑。


3
2018-06-02 21:42



你也可以用菜單檢查菜單中的啟動器 [222] (又名系統 - >首選項 - >主菜單);在Alacarte中找到菜單條目,然後查看屬性以查看正在運行的命令行。我非常確定發射器安裝在Xubuntu的同一個地方,但我不知道Alacarte是否包括在內。 - quack quixote


如果你想要一個電影播放器,你也可以從命令行控制,使用 mplayer


1
2018-05-21 06:44





注意: 這個答案是一個延伸 artistoex的答案。

此命令應顯示全部 目前正在運行 當前用戶執行的命令,並在最近60秒內啟動:

ps x --sort -start_time -U YOURUSERNAME -o start,command | \
awk '$1>=recently&&$1<=now' \
recently=$(date --date='60 seconds ago' +%T) now=$(date +%T) | sed 1,1d

要使用此命令,請單擊圖標或菜單項以執行命令,當剛剛打開的程序仍在運行時,執行上述命令。記得要更換 YOURUSERNAME 使用當前用戶的用戶名。

說明

ps 將顯示當前正在運行的進程解釋 ps 參數:

  • x:包括未通過終端執行的進程(實際上是 tty)。添加 -t '?' 會顯示 只要 與終端無關的進程。
  • --sort -start_time:按進程啟動時的順序對輸出進行排序(降序)
  • -U YOURUSERNAME:更換 您的用戶名 使用您的用戶名將僅顯示您的用戶執行的進程。如果需要,可以刪除此限制。
  • -o start,command:在輸出中顯示兩列:進程的開始時間和執行的命令

awk 此處僅用於顯示最近執行的進程。解釋 awk 參數:

  • $1>=recently&&$1<=now:將輸出限制為在過去60秒內執行的進程。要更改此時間範圍,請修改下一個參數(recently 變量賦值)
  • recently=$(date --date='60 seconds ago' +%T):設置 awk 變量 recently 用於前一個參數到60秒之前 HH:MM:SS 格式(ps 時間格式)。
  • now=$(date +%T):設置 awk 變量 now 到當前時間(這是為了排除在不到24小時前執行的過程,看起來它們將來會被執行)

我補充道 sed 1,1d 刪除第一行輸出,因為它將顯示當前正在執行的命令,這顯示無意義。

記住: 運用 ps 找出執行的進程將無法按預期運行某些程序。例如,如果單擊Firefox快捷方式但Firefox已在運行,則不會創建新進程,並且不會更改舊進程的開始時間。但是,這種方法對許多程序都能很好地工作。


1
2018-06-02 21:25





在Xubuntu中,轉到用戶/共享/應用程序,然後右鍵單擊要放在面板中的任何應用程序。選擇發送(鏈接)到桌面。現在啟動器在桌面上,您可以右鍵單擊任何一個,然後選擇“屬性”以查看命令行。右鍵單擊面板,選擇創建啟動器,然後在桌面啟動器中為每個應用複制屬性。現在您可以刪除桌面上的啟動器。

它比Ubuntu(Gnome)稍微更加迂迴,但是Xubuntu更快,因為它減少了所有的好東西。


1
2018-03-01 19:08





那就是 totem


0
2018-05-21 06:19





菜單上顯示的內容由文件控制 .desktop 文件 /usr/share/applications。如果您查看任何這些文件,則有一行 Exec= 某些東西,這是你單擊圖標時Ubuntu運行的命令。


0
2018-06-02 18:46





這個答案是Cry Havok的延伸。

我認為這是最簡單的方法。

首先,您需要獲取複製到桌面的應用程序啟動器中的任何快捷方式。您可以右鍵單擊任何應用程序,然後選擇“將此啟動器添加到桌面”(如果您使用的是gnome)。

既然快捷方式在桌面上,您可以右鍵單擊它並選擇屬性。在Basic選項卡中,它將顯示為啟動應用程序而啟動的命令行命令。

您還可以打開gedit並打開桌面圖標。桌面圖標只是帶有“.desktop”擴展名的文本文件。在此文件中,您將看到該快捷方式的所有參數,包括“Exec =”部分,該部分顯示可以從命令行調用的程序。


0
2018-06-03 04:11





如果你正在使用gnome,那就是

 gnome-open <file> 

gnome-open然後使用已註冊的程序打開該文件以打開該文件。 但是,如果您不想知道正在運行的最終進程,您可以嘗試

ps ux | grep filename

或者你可以從輸出中搜索

ps ux

0
2018-06-02 16:01