Questão Como ver o comando anexado a um alias bash?


Suponha que eu tenha um alias no shell bash. Existe um comando simples para imprimir qual comando o alias será executado?


258
2018-02-07 03:24


origem




Respostas:


o type O builtin é útil para isso. Ele não apenas informará sobre aliases, mas também funções, builtins, palavras-chave e comandos externos.

$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep () 
{ 
    ps -ef | { 
        read -r;
        echo "$REPLY";
        grep --color=auto "$@"
    }
}

342
2018-02-12 09:52



o que fazer quando um alias contém mais aliases? - user251046
@ user251046 continue usando type até você acertar algo diferente de um alias ... - geirha
Eu gosto desta resposta porque type irá analisar / interpretar quaisquer citações, para que você possa ter certeza de que as cotações estão corretas. - wisbucky


Apenas digite alias enquanto no prompt da Shell. Ele deve exibir uma lista de todos os aliases ativos no momento.

Ou você pode digitar alias [command] para ver o que um alias específico é aliased para, por exemplo, se você queria descobrir o que o ls alias foi aliased para, você poderia fazer alias ls.


127
2018-02-07 03:30



Ou digite alias ls para descobrir o que especificamente ls é aliased para. - poolie
@poolie De fato. Eu acho que a questão era ver todos os aliases, é por isso que eu não elaborei mais sobre o comando alias. - Thomas Ward♦
enquanto isso funciona para aliases, não funciona se você tiver definido uma função de shell personalizada. type no entanto, funciona em ambos os casos. - Sujay Phadke


Eu realmente gosto Ctrl+Alt+E como aprendi com esta resposta. Ele "expande" a linha de comando digitada atualmente, o que significa que executa a expansão de alias (entre outras coisas).

O que isso significa? Acontece qualquer alias, que possa estar atualmente escrito na linha de comando, no significado do alias.

Por exemplo, se eu digitar:

$ ls

e depois pressione Ctrl+Alt+E, é transformado em

$ ls --time-style=locale --color=auto

51
2018-02-13 17:52



tem isso equivalente em outras distros? - sepehr
@sepehr Funciona no Debian, eu assumo que é um recurso bash e deve funcionar em qualquer distribuição. - Der Hochstapler
você está certo, ele funciona no bash mas eu tenho zsh e não funciona infelizmente. - sepehr
foi muito útil. Eu tinha um objetivo diferente de expandir um dos comandos bash anteriores registrados no histórico, ou seja, 394, para poder editá-lo primeiro antes de executar - XXL
Como conseguir isso no bash OSX? - Govind Rai


Estritamente falando, a resposta correta está usando a matriz BASH_ALIASES, por exemplo:

$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars

6
2018-01-13 12:12



Achei isso útil em uma situação em que eu queria que o acesso programático à instrução real fosse aliasment sem o material humano útil em torno dele. - M. Justin
Muito útil, obrigado! - Noldorin
isso não está funcionando em zsh - ProGrammar
@ProGrammar a questão era sobre o bash - para o zsh você deve procurar questões sobre o zsh - noonex


Você poderia usar o which comando.

Se você definir um alias para ls Como ls -al e depois digite which ls, você verá:

ls: aliased to ls -al.


1
2017-08-05 07:36



bash não tem which comando. - geirha
Não está funcionando para mim .. - Chiel ten Brinke
Está funcionando para mim. obrigado - Indrajeet Gour
which é uma maneira ruim de procurar aliases como explicado aqui: unix.stackexchange.com/questions/10525/…   Nem funciona para mim para pseudônimos no bash no Ubuntu. - Sujay Phadke