Articles

Como usar pseudônimos em comandos Linux shell

Este artigo é reimpresso a partir do Livro Um Guia Prático para Comandos Linux, editores e programação Shell 3rd edition, com permissão do autor e editor Prentice Hall, todos os direitos reservados.

uma alcunha é um nome (geralmente curto) que a shell traduz para outro (geralmente mais longo) nome ou Comando. Os nomes alternativos permitem-lhe definir novos comandos, substituindo um texto pelo primeiro símbolo de um comando simples. Eles são tipicamente colocados no ~/.bashrc (bash) ou ~/.,os arquivos de inicialização do tcshrc (tcsh) estão disponíveis para sub-células interativas.

Em bash a sintaxe do alias builtin é

alias ]

Sob o tcsh a sintaxe é

alias ]

No bash sintaxe não são permitidos espaços em torno do sinal de igual. Se o valor contiver espaços ou tabulações, deverá incluir o valor entre aspas. Ao contrário dos pseudônimos do tcsh, um pseudônimo bash não aceita um argumento da linha de comando em valor., Use uma função bash quando precisar de usar um argumento.

Um alias não substitui a si mesmo, o que evita a possibilidade de recursividade infinita no tratamento de um alias, tais como o seguinte:

alias ls='ls -F'

Você pode aninhar aliases. Os nomes alternativos estão desactivados para as linhas de comandos não interactivas (isto é, os programas das linhas de comandos). Use ounalias builtin para remover um pseudónimo., Quando você dá um alias comando embutido, sem quaisquer argumentos, o shell exibe uma lista de todos os aliases definidos:

$ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i'

Para visualizar o alias para um nome específico, digite o comando alias seguido do nome do alias. A maioria das distribuições Linux definem pelo menos alguns pseudônimos. Indique um comando ‘alias’ para ver quais os nomes alternativos que estão em vigor. Poderá apagar os nomes falsos que não deseja do ficheiro de arranque apropriado.,

aspas simples versus aspas duplas em pseudónimos

a escolha de aspas simples ou duplas é significativa na sintaxe do nome falso quando o nome falso inclui variáveis. Se você colocar o valor dentro de aspas duplas, todas as variáveis que aparecem em valor são expandidas quando o alias é criado. Se você colocar o valor dentro de aspas simples, as variáveis não são expandidas até que o alias seja usado. O exemplo seguinte ilustra a diferença.

a variável de palavras-chave PWD contém a localização da pasta de trabalho., Max cria dois pseudônimos enquanto ele está trabalhando em seu diretório de casa. Porque ele usa aspas duplas quando ele cria o alias dirA, a shell substitui o valor do Diretório de trabalho quando ele cria este alias. O comando alias dirA mostra a alcunha dirA e mostra que a substituição já ocorreu:

 $ echo $PWD /home/max $ alias dirA="echo Working directory is $PWD" $ alias dirA alias dirA='echo Working directory is /home/max' 

quando Max cria a alcunha dirB, usa aspas simples, o que impede a shell de expandir a variável $PWD., O comando dirB também mostra que o dirB também possui a variável $PWD:

 $ alias dirB='echo Working directory is $PWD' $ alias dirB alias dirB='echo Working directory is $PWD'

Depois de criar os pseudónimos dirA e dirB, Max usa cd para fazer dos carros a sua pasta de trabalho e dá cada um dos pseudónimos como um comando. O alias que ele criou usando aspas duplas exibe o nome do diretório em que ele criou o alias como o diretório de trabalho (que está errado)., Em contraste, o dirB alias apresenta o nome correto da pasta de trabalho:

 $ cd cars $ dirA Working directory is /home/max $ dirB Working directory is /home/max/cars

> DICA: Como evitar que o shell de invocar um alias

O shell verifica apenas simples, não cotadas comandos para ver se eles são aliases. Os comandos indicados como nomes de localização relativos ou absolutos e os comandos citados não estão assinalados. Quando quiser dar um comando que tenha um nome alternativo mas não queira usar o nome alternativo, preceder o comando com uma barra invertida, indique o nome absoluto do comando, ou dê o comando como ./command.,

Exemplos de aliases

O seguinte alias permite que você digite r repita o comando anterior ou r abc para repetir a última linha de comando que comece com abc:

$ alias r='fc -s'

Se você usar o comando ls -ltr com freqüência, você pode criar um alias que substitui ls -ltr quando você dá o comando l:

Outro uso comum de aliases é para se proteger de erros., O exemplo a seguir substitui a versão interativa de rm utilitário de quando você digitar o comando zap:

$ alias zap='rm -i' $ zap f* rm: remove 'fixtax.icn'? n rm: remove 'flute.ps'? n rm: remove 'floor'? n

– eu opção faz com que o rm pedir-lhe para verificar cada ficheiro que deverá ser eliminados, assim ajudando você a evitar apagar o arquivo errado. Você também pode alias rm com o rm -i comando: alias rm='rm ‒i'.,

Os aliases no exemplo a seguir causar o shell para substituir ls -l cada vez que você dá um ll comando e ls ‒F cada vez que você usar ls.A opção-F causals para imprimir uma barra (/) no final dos nomes das pastas e um asterisco (*) no final dos nomes dos ficheiros executáveis.,

neste exemplo, a seqüência de caracteres que substitui o alias ll (ls ‒l) em si contém um alias (ls). Quando ele substitui um alias com seu valor, a shell olha para a primeira palavra da string de substituição para ver se ele é um alias. No exemplo anterior, a cadeia de substituição contém o pseudônimo ls, então uma segunda substituição ocorre para produzir o comando final ls ‒F ‒l., (To avoid a recursive plunge, the ls in the replacement text, although an alias, is not expanded a second time.)

Quando é fornecida uma lista de aliases sem o =value ou value campo, o alias builtin apresenta o valor de cada definido alias., alias builtin relata um erro se a um alias não foi definido:

$ alias ll l ls zap wx alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i' bash: alias: wx: not found

Você pode evitar alias substituição ao anterior, o alias de comando com uma barra invertida (\):

$ \ls Test_Emacs XTerm.ad flute.ps maptax.icn Tiger fixtax.icn floor testdir

Devido a substituição de um nome de alias, com o valor de alias não alterar o resto da linha de comando, quaisquer argumentos ainda são recebidas pelo comando que é executado:

$ ll f* -rw-r--r--. 1 max pubs 641 04-01 08:12 fixtax.icn -rw-r--r--. 1 max pubs 30015 03-01 14:24 flute.ps -rwxr-xr-x. 1 max pubs 485 09-21 08:03 floor*

Você pode remover um alias usando o unalias builtin., Quando a alcunha zap é removida, ela não é mais mostrada pelo alias builtin, e seu uso subsequente resulta em uma mensagem de erro:

$ unalias zap $ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' $ zap maptax.icn bash: zap: command not found