Eu vim com esta resposta para pessoas que querem usar o bash de uma maneira boa. É claro que a resposta da pergunta está relacionada à listagem dos arquivos /usr/share/applications
, mas o problema é que o ls
comando nunca deve ser analisado . No passado, eu estava cometendo o mesmo erro, mas agora aprendi que a melhor maneira é usar um for
loop para iterar nos arquivos, mesmo que eu precise usar mais algumas teclas do meu precioso teclado:
for app in /usr/share/applications/*.desktop; do echo "${app:24:-8}"; done
Eu também usei nas operações de manipulação de cadeia de comando anteriores : removidas dos app
primeiros 24 caracteres que são /usr/share/applications/
e dos últimos 8 caracteres que são .desktop
.
Atualizar:
Outro local onde você pode encontrar aplicativos mostrados pelo Dash é ~/.local/share/applications/*.desktop
. Portanto, você também precisa executar o seguinte comando:
for app in ~/.local/share/applications/*.desktop; do echo "${app:37:-8}"; done
Para unificar os dois comandos anteriores, você pode usar:
for app in /usr/share/applications/*.desktop ~/.local/share/applications/*.desktop; do app="${app##/*/}"; echo "${app::-8}"; done
zsh
,zsh-common
e outros!--no-gui
remoção.--no-gui
papel, parece que não existe para o que eu pensava que era.Execute o comando abaixo para ver todos os aplicativos instalados,
Se você deseja obter a lista de todos os aplicativos instalados, execute o comando abaixo,
Ele armazenará a saída do comando acima para
applications.txt
arquivar dentro do seu~/Desktop
diretório.OU
Execute também o comando abaixo no terminal para listar os aplicativos instalados,
Para obter a lista no arquivo de texto, execute o comando abaixo
As entradas da área de trabalho para todos os aplicativos instalados são armazenadas dentro do
/usr/share/applications
diretório, onde os nomes dos arquivos estão no formatoapplication-name.desktop
.Remover a.desktop
parte dos nomes dos arquivos fornecerá a lista total de aplicativos instalados.Atualizar:
Como o @Radu sugeriu , você também pode encontrar entradas da área de trabalho para seus aplicativos instalados adicionais dentro do
~/.local/share/applications
diretório.fonte
ls
comando nunca deve ser analisado !ls
- para fins de representação e para tarefas não críticas, como a acima - e tentarei ter em mente essa limitação, obrigado pelo aviso!Se você precisar da lista de aplicativos mostrados ao pressionar Super+ A, poderá usar
ls /usr/share/applications
. A única coisa que você deve fazer é substituir o.desktop
final, que é uma tarefa bastante simples. Eu faço isso comsed
:Mas você pode fazer isso depois de receber a lista usando o editor de texto.
fonte
ls
comando nunca deve ser analisado !/usr/share/application/*.desktop
arquivos não contêm caracteres especiais, portanto, a análisels
particularmente nesse caso é permitida.bad name.desktop
por exemplo? Não há razão para arriscarls
aqui.Não sei por que a maioria das respostas postadas envolve a extração do nome do arquivo dos atalhos do .desktop. O nome do arquivo do atalho .desktop pode ser qualquer coisa, menos o que importa é o
Name
campo dentro do arquivo de atalho. Se você deseja criar a lista de nomes de aplicativos instalados exibidos no Dash, basta "grep" nesse campo em[Desktop Entry]
Código rudimentar, com bash
Mas isso não leva em conta os atalhos ocultos da exibição no Dash. Alguém com uma melhor compreensão das especificações do .desktop pode querer expandir ainda mais esse código para excluir esses tipos de atalhos
Edit: outra tentativa, com Python
fonte
Name
entrada no .desktop que você está analisando, o que sempre acontece. Além disso, você não deve assumir que todas as linhas com as quais você está interessado estarão no número fixo da linhaName
opção poderia estar fora desse intervalo de número de linha, especialmente com muitas opções ou linhas em branco abaixo[Desktop\ Entry ]
. E arquivo .desktop é uma iniO interlocutor deseja listar os nomes de todos os "aplicativos" instalados.
Em relação aos aplicativos com arquivos .desktop :
/usr/share/applications
~/.local/share/applications
Name=
linha no respectivo arquivo .desktop. Um exemplo é "Mapa de caracteres".Exec=
. No caso de "Mapa de Caracteres", seriagucharmap
.sed -ns '1F;/^\[Desktop Entry\]/,/^\[/{/^Name=/p;/^Exec=/h};${z;x;G;p}' /usr/share/applications/*.desktop
sed -ns '1F;/^\[Desktop Entry\]/,/^\[/{/^Name=/p;/^Exec=/h};${z;x;G;p}' $HOME/.local/share/applications/*.desktop
Em relação aos aplicativos sem arquivos .desktop :
Dependendo de como se define "aplicativo", alguns não têm arquivos .desktop.
conky
,poppler-utils
,qpdf
,xdotool
ewmctrl
ser considerados "apps"? Como eles devem ser identificados e listados por seus nomes (supondo que alguém os tenha instalado)?awk
,find
,grep
,ls
esed
para citar um pouco mais? Eles são aplicativos ou não são?Se algo que possui um comando é considerado um aplicativo, o comando Linux para listar todos os comandos e aliases disponíveis e essa resposta ajudará a identificá-los.
fonte