Para que comando serve o alias?

28

Alguém pode me dizer qual llé o comando do terminal para o alias ? Tudo o que posso encontrar on-line são muitas pessoas dizendo que é um apelido para ls -lou ls -laou ls -ltr. Mas isso é simplesmente errado. O resultado parece diferente. Existe alguma maneira de localizar lle analisar sua sintaxe?

Sócrates
fonte

Respostas:

76

Você pode usar os comandos aliasou typepara verificar o significado de um alias específico:

$ alias ll
alias ll='ls -alF'

$ type ll
ll is aliased to `ls -alF'

Observe, no entanto, que os aliases podem usar outros aliases; portanto, talvez seja necessário checá-lo recursivamente; por exemplo, no caso de ll, você também deve verificar o lscomando que ele chama:

$ alias ls
alias ls='ls --color=auto'

$ type ls
ls is aliased to `ls --color=auto'

Então, llna verdade significa:

ls --color=auto -alF
Byte Commander
fonte
10
Observe que, no caso geral, um comando pode ter várias definições simultâneas. type -a commandnameirá revelar tudo - ele informará se o comando é um ou mais de um alias, função, interno ou um ou mais arquivos executáveis ​​no seu PATH, nessa ordem de precedência. Isso ajuda a entender por que, por exemplo, desalinhar um comando não o retorna completamente ao comportamento esperado.
Pausado até novo aviso.
Eu recomendo alias ll='ls -lh'. Você pode executar ls -lse desejar tamanhos em bytes, em vez de B / kiB / MiB / GiB, amigáveis ​​ao ser humano.
Peter Cordes
13

llé um alias definido no seu ~/.bashrc, desde que você não o tenha alterado, é ls -alF:

$ grep ll= <~/.bashrc
alias ll='ls -alF'

Essas três opções são:

  • -a, --all - não ignora as entradas iniciadas por.
  • -l - use um formato de listagem longo
  • -F, --classify - acrescenta o indicador (um de * / => @ |) às entradas

Como

$ grep ls= <~/.bashrc
alias ls='ls --color=auto'

mostra, lsele próprio é novamente um alias para ls --color=auto:

Com --color=auto, lsemite códigos de cores somente quando a saída padrão está conectada a um terminal. A LS_COLORSvariável de ambiente pode alterar as configurações. Use o dircolors comando para configurá-lo.

sobremesa
fonte
Não necessariamente .bashrc. Se você usar um shell diferente, ele será definido no arquivo .rc para esse shell -, cshrc, .tchshc e assim por diante.
Jamesqf # 9/18
@jamesqf Eu acho que alguém que usa um shell diferente também sabe quais alias são predefinidos nele - fiz a pergunta sobre a configuração padrão do Ubuntu, onde bashé o shell padrão para os usuários e o alias llé definido no /etc/skel/.bashrcqual é copiado para cada novo diretório inicial do usuário. Claro que você pode usar qualquer arquivo para armazenar seus próprios aliases - tudo que você precisa é fonte dele.
dessert
2
Não é necessário redirecionar o arquivo para o arquivo grep, ele aceitará o nome do arquivo como argumento. Enquanto grepping os arquivos de inicialização o ajudarão a encontrar onde o alias está (re) definido (observe que ele pode estar em um arquivo /etc- sabendo que você poderá economizar um pouco de esforço se você removê-lo do arquivo de inicialização do usuário e ele ainda persistir ou até muda seu comportamento), se você quiser saber rapidamente qual é a definição, o comando alias , conforme observado na resposta aceita, fará o trabalho.
Pausado até novo aviso.
@DennisWilliamson Não é necessário deixar bashabrir o arquivo, mas é muito melhor! A última frase do post de pergunta diz: Existe alguma maneira de localizar lle examinar sua sintaxe? , é isso que minha resposta responde.
dessert
3

Você pode procurar no seu ~ / .bashrc (ou em algum arquivo em que estejam os seus pseudônimos) ou escrever alguns desses comandos no shell:

command -v ll # "command" is a shell built-in that display information about       
              # the command. Use the built-in "help command" to see the 
              # options.
type -p ll # "type" is another built-in that display information about how the 
           # command would be interpreted
grep -r "alias ll=" ~ # and don't worry about de .file that contains your 
                      # alias. This command search recursively  under  each  
                      # folder of your home. So it's something rude.
find ~ -maxdepth 1 -type f | xargs grep "alias ll" # Just look in 
                      # the files (not folders) in your home folder

Mas por que usar find sem o nome ". *"? Porque você pode colocar isso no seu .bashrc

source bash_hacks # where the file bash_hacks, in your home directory can 
                  # contain the alias ll='ls -la etc etc'.

Como "ll" é um alias, não é necessário que tenha apenas um significado (ll = 'ls -alF --color'), você pode alias seu "ll" como outro comando como, eu não sei, "rm" . Eu acho que é mais uma convenção (produto de usos comuns).

Mas "ll" pode ser um programa armazenado em qualquer pasta do seu PATH. Por exemplo, se você tiver uma pasta chamada "bin" em sua casa, crie um script "ll" que contenha algo como

#!/bin/bash
ls -lhar

Mas, e se o seu PATH tiver sido alterado para adicionar outra pasta que contenha o novo comando "ll"? Para informações mais interessantes, você pode consultar o seguinte link para uma pergunta relacionada.

Cuauhtli
fonte
0

Não há necessidade de analisar ~ / .bashrc ou qualquer outro script. Você pode verificar seus valores atuais de todos os apelidos digitando o aliascomando no terminal. Ele trará todos os aliases definidos com suas definições na tela.

Serg Stetsuk
fonte
Olá e bem-vindo ao askubuntu. Como essa resposta está adicionando algo à aceita?
Bruni