Como encontrar o comando de uma aplicação, graficamente ou não?

4

Muitas vezes, acho que preciso descobrir o comando para executar um determinado aplicativo, como um aplicativo de despertador ou o monitor do sistema. No entanto, muitos dos comandos reais da CLI para executá-los não são diretamente evidentes. O que eu costumo fazer é simplesmente ir ao Ubuntu Software Center, então procurar pelo "nome comum" da aplicação e, portanto, encontrar o nome do seu pacote / comando. Eu gostaria de saber se existe uma maneira mais fácil ou mais eficiente de fazer isso.

Eu queria saber se existe um comando semelhante ao xprop , onde clicar em um aplicativo aberto (gráfico) produziria seu comando no terminal. Em outras palavras, estou interessado em uma maneira gráfica de encontrar o comando de um aplicativo.

Por exemplo, se eu executar esse comando e clicar em System Monitor, o terminal produzirá gnome-system-monitor , etc. Obrigado.

PS. Se uma solução não estiver disponível no momento, eu estaria interessado em escrever meu próprio script com essa funcionalidade. Eu só sei bash básico, no entanto. Eu percebo que provavelmente deveria ir em uma questão separada, mas eu estou apenas jogando isso lá fora.

    
por DeoxNa 08.03.2013 / 05:55

3 respostas

0

Eu escrevi este script (bastante feio) para encontrar o comando para executar um aplicativo em execução clicando nele. Ele usa xprop para obter a "interface de cliques" e para obter informações sobre a janela selecionada:

#!/bin/bash

xprop > ./tmp

chk_desk='grep -c "_NET_WM_DESKTOP_FILE(STRING)" ./tmp' #Checks whether application has a corresponding .desktop file. The '-c' counts the number of matches.

if [ $chk_desk -ne 0 ] ; then
    desk_line='grep "_NET_WM_DESKTOP_FILE(STRING)" ./tmp' #Extract line containing .desktop path 
    desk_path=${desk_line/"_NET_WM_DESKTOP_FILE(STRING) = "/} #Extract only the .desktop path
    desk_path=${desk_path//\"/} #Removes quotes
    exe_line='grep "Exec=" $desk_path | head -n1'
    exe=${exe_line/"Exec="/}
else #If .desktop doesn't exist, it uses the PID to find the executable
    pid_line='grep "_NET_WM_PID(CARDINAL)" ./tmp' 
    pid=${pid_line/"_NET_WM_PID(CARDINAL) = "/}
    exe_path='readlink -f /proc/$pid/exe'
    exe=${exe_path/\/usr\/bin\//}
fi

echo $exe

rm ./tmp

exit 0

Caso você esteja se perguntando, eu não poderia ter usado apenas o PID para correspondência, pois /proc/$pid/exe fornece o caminho do executável "real" ou do serviço subjacente que está executando o programa. Então, se você usou em 'geogebra', o script irá gerar java. Ou, no caso do Firefox, você obteria o caminho /usr/lib/firefox/firefox , que, suponho, é onde o executável do firefox existe, o que significa que /usr/bin/firefox aponta para ele.

Embora o firefox não seja um grande problema (você pode usar o executável "real"), para os aplicativos baseados em java, o arquivo .desktop é necessário para que o comando execute o aplicativo real e não uma sessão java vazia.

Esse script, é claro, só funcionará se você estiver usando o X como seu servidor de exibição (já que ele usa xprop). Tenho certeza de que deve haver uma maneira de tornar o script mais limpo, embora meu principal problema fosse ter que criar muitas variáveis para armazenar as saídas de linha grep e as várias substituições.

    
por DeoxNa 10.03.2013 / 21:05
2

Eu sei que você prefere uma rota gráfica, mas aqui está o meu esforço como aprendiz de material da CLI ...

Para listar nomes com comandos :

grep '^Name=' /usr/share/applications/*.desktop > ~/Desktop/mgtl1.txt && grep -h '^Exec=' /usr/share/applications/*.desktop > ~/Desktop/mgtl2.txt && paste -d':' ~/Desktop/mgtl1.txt ~/Desktop/mgtl2.txt > ~/Desktop/mgtl3.txt && perl -p -i -e 's/\/usr\/share\/applications\///'g ~/Desktop/mgtl3.txt && perl -p -i.bak -e 's/\n/\n\n/'g mgtl3.txt && perl -p -i.bak -e 's/:/\n/'g mgtl3.txt  

criará quatro arquivos na área de trabalho e mgtl3.txt será semelhante a este:

apport-gtk-mime.desktop  
Name=Report a problem...  
Exec=/usr/share/apport/apport-gtk -c %f

audacity.desktop  
Name=Audacity  
Exec=audacity %F

blueman-manager.desktop  
Name=Bluetooth Manager  
Exec=blueman-manager

Para encontrar o comando de qualquer software
Inicie o software. Então, corra

COLUMNS=150 ps -ef > ~/Desktop/out.txt  

Examine as últimas linhas de out.txt para o comando relevante.

    
por user25656 08.03.2013 / 07:27
0

usando UNITY

Dash - > Procurar por terminal

Dash - > Mais Apps - > 'Veja mais resultados'

Dash - > Mais Apps - > Acessórios

usando o Terminal Atalho de teclado: Ctrl + Alt + T

leia este link

    
por 3bu1 09.03.2013 / 19:29