compgen -c | sort -b | uniq | less
Mostra também funções e palavras-chave (felizmente sem aliases), em vez disso, quero tudo o que não seja palavras-chave, funções ou aliases. Em poucas palavras apenas os comandos.
Se o nome do comando corresponder ao nome da função, nome da palavra-chave ou nome do alias; o nome do comando não deve ser omitido.
Para
compgen
(e acho que para Linux em geral ), um comando é tudo o que você pode executar, incluindo alias e funções, etc.Se você deseja obter apenas arquivos/scripts executáveis em qualquer um de seus
$PATH
diretórios, não há uma boa maneira de usarcompgen
.Você pode usar
comm
para mostrar todos os comandos, excluindo aliases, palavras-chave e funções:No entanto, isso também removerá comandos que são alias/função e comando (por exemplo ,
ls
ougrep
têm um alias por padrão no Ubuntu, assim como qualquer coisa que você mesmo tenha adicionado).Então, acho melhor você obter todos os executáveis
$PATH
com seu próprio script (e se desejar, pode adicionarbuiltins
usandocompgen -b
):Para imprimir aliases , execute:
Para imprimir funções , execute:
ou
Para imprimir comandos (excluindo aliases , palavras- chave e funções ), execute:
grep -wv "$(alias | grep -oP '\w+(?=\=)')"
excluirá aliases.grep -wv "$(declare -F | awk '{print $3}')"
excluirá funções.grep -wFv "$(compgen -k)"
excluirá palavras-chave.