Existe um comando Linux que listará todos os comandos e aliases disponíveis para esta sessão do terminal?
Como se você tivesse digitado 'a' e pressionado tab, mas para todas as letras do alfabeto. Ou executando 'alias', mas também retornando comandos.
Por quê? Eu gostaria de executar o seguinte e ver se um comando está disponível:
ListAllCommands | grep searchstr
Respostas:
Você pode usar o bash (1) embutido
compgen
compgen -c
listará todos os comandos que você pode executar.compgen -a
listará todos os aliases que você pode executar.compgen -b
listará todos os built-ins que você pode executar.compgen -k
listará todas as palavras-chave que você pode executar.compgen -A function
listará todas as funções que você pode executar.compgen -A function -abck
listará todos os itens acima de uma só vez.Verifique a página de manual para outras conclusões que você pode gerar.
Para responder diretamente à sua pergunta:
deve fazer o que você quiser.
fonte
compgen | grep
, pode ser mais eficiente passar a string como argumento paracompgen
si mesma (se for um prefixo, como está implícito na pergunta). Nesse caso, isso seriacompgen -ac searchstr
.whatis compgen
e 'Nenhuma entrada manual' paraman compgen
.bash
comando interno , não um comando separado, com sua própria página de manual. Você precisará ler abash(1)
página do manual ou executarhelp compgen
em umabash
linha de comando.compgen -c | sort | uniq | less
imprimirá todos os comandos disponíveis sem linhas duplicadas e classificados em ordem alfabética.Adicionar ao .bashrc
Se você também quiser aliases, então:
fonte
-L
para seguir links simbólicos para o destino. Nota:-L
é uma opção e não faz parte da expressão correspondente; portanto, ela deve ser colocada antes do caminho na linha de comando. Neste casofind -L {}
echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 -executable -type f -printf '%P\n' 2> /dev/null | sort -u
(+1 para compatibilidade com zsh)Existe o
comando que lista todos os aliases e comandos em $ PATH onde mycommand é usado. Pode ser usado para verificar se o comando existe em várias variantes. Fora isso ... Provavelmente existe algum script que analisa $ PATH e todos os aliases, mas não conhece nenhum script desse tipo.
fonte
Use "what searchstr". Retorna o caminho da configuração binária ou do alias, se for um alias
Editar: se você estiver procurando por uma lista de aliases, poderá usar:
Adicione isso à resposta que você procura no CAMINHO. Supõe que você esteja usando o bash ..
fonte
O comando others não funcionou para mim em sistemas embarcados, porque eles exigem o bash ou uma versão mais completa do xargs (o busybox era limitado).
Os seguintes comandos devem funcionar em qualquer sistema semelhante ao Unix.
Listar por pasta:
Listar todos os comandos por nome
fonte
tr
. Por que não simplesmentels $(echo ${PATH//:/ })
?Experimente este script:
fonte
Para usuários de Mac ( find não possui -executable e xargs não--d):
fonte
É útil listar os comandos com base nas palavras-chave associadas ao comando.
Usar:
man -k "your keyword"
fique à vontade para combinar com:
| grep "another word"
por exemplo, para encontrar um editor de texto:
man -k editor | grep text
fonte
Tente pressionar ALT-? (alt e ponto de interrogação ao mesmo tempo). Dê um ou dois segundos para criar a lista. Deve funcionar no bash.
fonte
Aqui está uma solução que fornece uma lista de todos os executáveis e aliases. Também é portátil para sistemas sem
xargs -d
(por exemplo, Mac OS X) e lida adequadamente com caminhos com espaços neles.Uso:
myscript.sh [grep-options] pattern
por exemplo, para encontrar todos os comandos que começam comls
maiúsculas de minúsculas, faça:fonte
método de atalho para listar todos os comandos. Abra o terminal e pressione duas vezes o botão "tab" . Isso mostra todos os comandos no terminal
fonte
grep
exatamente como?Como alternativa, você pode obter uma lista conveniente de comandos, juntamente com descrições rápidas (desde que o comando tenha uma página de manual, o que a maioria possui):
Então você apenas o cumprimenta como deseja.
rendimentos:
Os resultados não parecem classificados, portanto, se você estiver procurando por uma lista longa, poderá lançar um | classificar | no meio e, em seguida, canalize-o para um pager como menos / mais / mais. ala:
O que retorna uma lista ordenada de todos os comandos que possuem "zip" em seu nome ou em sua breve descrição e bombeia esse pager "less". (Você também pode substituir "less" por $ PAGER e usar o pager padrão.)
fonte
Você pode sempre o seguinte:
O shell executará o comando somente se eles estiverem listados no caminho env var de qualquer maneira.
fonte
depende, com isso quero dizer que depende de qual shell você está usando. Aqui estão as restrições que eu vejo:
Eu uso o ZSH, então aqui está uma resposta do zsh, ele faz as seguintes 3 coisas:
Aqui está:
Se você usa o zsh, deve fazê-lo.
fonte
O problema é que a conclusão da guia está pesquisando seu caminho, mas nem todos os comandos estão no seu caminho.
Para encontrar os comandos no seu caminho usando o bash, você pode fazer algo como:
para x in
echo $PATH | cut -d":" -f1
; faça $ x; feitofonte
Aqui está uma função que você pode colocar no seu arquivo bashrc:
Exemplo de uso:
FYI: IFS é uma variável que o bash usa para dividir seqüências de caracteres.
Certamente, poderia haver algumas maneiras melhores de fazer isso.
fonte
Talvez eu esteja entendendo errado, mas e se você pressionar Escape até ter as possibilidades Exibir todos os X?
fonte
fonte
compgen -c > /tmp/list.txt && /tmp/wc list.txt
Por que você não digita apenas:
No terminal.
A concha dirá algo como
EDITAR:
Ok, entendi o voto negativo, porque a resposta é estúpida, só quero saber: o que há de errado com esta resposta !!! O autor da pergunta disse:
Digitar o comando dirá se ele está disponível !.
Provavelmente, ele / ela quis dizer "sem executar o comando" ou "incluí-lo em um script", mas não consigo ler sua mente (não é que não possa regularmente, é apenas que ele está usando um defletor de leitura da mente )
fonte
formathdd
comando existe. Oh espere, eu apenas para executá-lo e ver. caramba. Obrigado :)no debian: ls / bin / | grep "whatImSearchingFor"
fonte