Para comandos, use compgen -c
:
$ compgen -c bas
basename
base64
bashbug
bash
basename
base64
bashbug
Esta saída você pode simplesmente percorrer grep
.
Ao usar comandos no bash eu gosto da opção de guia dupla para exibir os comandos disponíveis. Alguns comandos têm mais correspondências possíveis do que outras:
Captura de tela da conclusão de uma guia http://img13.imageshack.us/img13/5541/picturemhy.jpg
Existe uma maneira de canalizar a saída da guia dupla para algum lugar, como grep
? Eu encontrei uma postagem relacionada , mas eu Ainda não tenho certeza de como implementá-lo para canalizá-lo para grep.
Com base na resposta de @ salutis, criei um script que chamei de comp
e armazenado em ~/bin/comp
que pesquisa commands
', aliases
e builtins
, (opção sinalizador -cab
consulte a entrada bash man ), com um segundo parâmetro opcional que, se presente, canaliza a saída para grep
e procura pelo segundo parâmetro.
Usage: comp string [keyword-for-grep]
Código:
#!/bin/bash
if [ -z "$1" ]; then
echo usage: comp string [keyword-for-grep]
echo
exit
fi
if [ -z "$2" ]; then
compgen -cab -- $1
exit
fi
compgen -cab -- $1 | grep -i $2
Pessoalmente, eu também estaria interessado em descobrir uma maneira de remover o último comando do histórico do shell no script (algo relacionado a history -d
) para que, ao pesquisar bash
history, não encontre comp
entradas. Eu sei que eu também posso fazer isso com HISTIGNORE
, mas o linux é muito poderoso, então deve haver uma maneira de fazer isso a partir do arquivo de script também - certo?
Por que não encontrar o que você está procurando?
Exemplo:
find / -name ec2* -executable -type f -perm -og+rx -print
Conhecendo seu caso de uso, posso criar um exemplo de comando mais detalhado.