Execute um comando sombreado por um alias

140

Digamos que eu tenha o seguinte alias no bash - alias ls='ls --color=auto' - e quero chamar ols normal sem opções. É a única maneira de fazer isso é unalias, faça o comando e, em seguida, alias novamente? Ou há algum truque ou solução interessante?

    
por Mirzhan Irkegulov 24.05.2012 / 22:22

6 respostas

185

Você também pode prefixar uma barra invertida para desativar o alias: \ls

Editar: outras formas de fazer o mesmo incluem:

Use "comando": command ls conforme Mikel .

Use o caminho completo: /bin/ls conforme uther .

Cite o comando: "ls" ou 'ls' conforme o comentário de Mikel.

Você pode remover o alias temporariamente para essa sessão de terminal com unalias command_name .

    
por 13.04.2017 / 14:36
67

É para isso que serve o comando command .

Tente

command ls

Isso diz ao shell para ignorar aliases e funções.

Esta forma é suportada pelo bash , zsh e ash / traço.

    
por 25.05.2012 / 00:22
19

O alias é apenas um atalho definido. Neste exemplo, o alias definido é a string ls , que executa ls --color=auto . Se você não quiser esse comportamento, poderá chamar o binário ls usando o caminho absoluto.

Portanto, executar apenas /bin/ls produzirá saída sem cor porque não é o alias que você definiu.

Você também pode alterar o alias para algo diferente ou adicionar um novo alias que execute apenas ls sem os parâmetros de cor.

    
por 24.05.2012 / 22:33
9

Outra maneira, baseando-se na resposta do @ uther, é usar $(which ...) ou 'which ...' (usando backticks '' ) para encontrar automaticamente o caminho do executável. Isso funcionará em bash :

$(which ls)

'which ls'

Sem dúvida, simplesmente prefixar o comando com \ é muito menor.

UPDATE : De acordo com Como usar 'which' em um comando com alias? , isso não parece ser confiável em tudo.

    
por 25.05.2012 / 11:13
2

Pessoalmente, apenas evito definir aliases com os mesmos nomes de comandos, portanto, ls sempre invoca o comando real. Eu tenho aliases ou funções para várias combinações de opções como l , ll e lg . (Isso significa que eu preciso de unalias ls no meu .bashrc ou .cshrc .)

Acho que as suposições do sistema operacional sobre quais opções eu preferiria (ignorando as suposições dos designers do comando ls ) raramente correspondem aos meus próprios gostos pessoais. Por acaso não gosto da aparência de ls --color=auto e sua legibilidade pode variar muito entre preto sobre branco e branco sobre preto.

YMMV, e as outras soluções ainda são boas para saber.

    
por 25.05.2012 / 23:00
1

Digitar o comando em maiúsculas parece funcionar, como LS , embora eu não saiba bem por quê.

    
por 25.05.2012 / 01:06