Como listar comandos de aplicativos disponíveis no terminal

4

Estou usando o fluxbox e, recentemente, eu queria iniciar um aplicativo para edição de vídeo e não conseguia lembrar o nome dele. Eu costumo executar aplicativos do terminal, então eu queria saber se existe uma maneira de listar todos os comandos (aplicativos ou) específicos do aplicativo, como o recurso "executar ou elevar" do Xmonad? Esse recurso pode ser visto aqui em 1:14: link

Edit: Eu quero poder digitar um comando no terminal que retornará a lista de todos os aplicativos instalados (a lista de todos os comandos do aplicativo disponíveis, por exemplo, shotwell, gedit, gim, vim, vi, firefox, chromium-browser, etc. .) basicamente eu quero saber quais aplicativos eu posso executar (quais aplicativos eu tenho)

    
por vanjadjurdjevic 13.11.2011 / 01:22

3 respostas

6

Se você estiver usando bash(1) , poderá usar o compgen builtin:

$ compgen -abc -A function

-a para aliases, -b para builtins, -c para comandos e -A function para funções do shell. Você pode escolher quais deles você deseja excluir, pois você terá uma lista bastante grande (no meu sistema eu recebo comandos 3206).

O comando compgen serve para gerar candidatos à conclusão da linha de comando, mas também pode ser usado para essa finalidade.

    
por 13.11.2011 / 06:16
1

Isso é trivial se assumirmos que "apps que você pode executar" é sinônimo de "executáveis em seu caminho":

#!/bin/bash
IFS=: read -ra _dirs_in_path <<< "$PATH"

for _dir in "${_dirs_in_path[@]}"; do
    for _file in "${_dir}"/*; do
        [[ -x ${_file} && -f ${_file} ]] && printf '%s\n' "${_file##*/}"
    done
done
    
por 13.11.2011 / 03:41
1

Se você digitar pelo menos uma letra e, em seguida, pressionar a tecla Tab , verá uma lista de todos os programas executáveis cujo nome começa com essa letra. Isso é chamado de preenchimento ou autocompletar .

Você pode listar todos os programas executáveis com este snippet de shell:

( IFS=':'; set -f;
  for dir in $PATH; do
    for x in $dir/*; do echo $x; done
  done )

Isto lista todos os programas executáveis que você possui, que podem ser mais gerais do que você pretende por “todos os aplicativos”. Você também verá vários comandos que devem ser chamados por outros comandos e raramente são chamados diretamente pelos usuários. Uma lista dos aplicativos que devem ser chamados de uma GUI está disponível por meio dos arquivos *.desktop em /usr/share/applications . O seguinte comando irá exibi-los (você encontrará migalhas como %u , %c e assim por diante, indicando quais tipos de argumentos o comando normalmente espera; eles são descritos nos desktop especificação de formato de arquivo ).

grep -Proh '(?<=^Exec=).*' /usr/share/applications

Você pode ter uma idéia melhor de quais aplicativos você instalou, listando os pacotes que você possui: dpkg -l no Debian, Ubuntu e derivados; rpm -ql sob Red Hat, Fedora, SuSE e derivados; …

    
por 13.11.2011 / 16:54