Por exemplo, um alias comum que eu vi no ~/.bashrc
arquivo (ou equivalente) é
alias rm='rm -i'
No entanto, já vi pessoas recomendarem isso porque
- o alias pode não existir em outro sistema e, como você se tornou descuidado
rm
, exclui inadvertidamente algo importante. [1] - usando esse alias, você efetivamente se treina para digitar
y
ouyes
após cadarm
comando, o que derrota todo o propósito.
Existem outros motivos para recomendar contra isso? Alguns programas podem simplesmente fazer chamadas em rm
vez de \rm
, e o aliasing sobre ele pode causar problemas para eles?
Uso rm
simplesmente como exemplo, mas já vi outros comandos como cp
ou mv
cobertos por aliases também. Pessoalmente, estou me treinando lentamente para usar um alias como este no lugar de rm -i
:
alias trash=`mv -v -t $HOME/.Trash`
shell
command-line
alias
Ricardo Altamirano
fonte
fonte
rm -i
, ele me treina um pouco mais para adicionar automaticamente a-f
sinalização.rm -i
para o que quiser. Tais comodel
,irm
etc. Você não precisa usar o aliasrm
. Isso contorna o ponto 1 e, usando seletivamentedel
ourm
dependendo do que você deseja, você também evita o ponto 2 até certo ponto.Respostas:
Supondo que você esteja usando o bash, isso não deve causar problemas para scripts, pois os shells do bash não interativos não são originários
~/.bashrc
ou~/.bash_profile
(o que provavelmente é onde seus aliases são colocados ou é o primeiro passo para obter seus aliases em outro script) . No entanto, pode causar problemas se você estiver fornecendo scripts:Sua pergunta cobre a maior parte da preocupação geral sobre o aliasing dos comandos existentes, sendo a principal delas que ambientes desconhecidos que parecem à primeira vista iguais podem potencialmente produzir resultados bastante diferentes. Por exemplo, aliasing
rm
pararm -i
tem boas intenções, mas é ruim na prática pelas razões que você estado.fonte
Claro:
(3) Porque um dia espero acrescentar aos fundamentos construídos pelas pessoas [-----------] e paranóicas que castigam outras pessoas por apelidar comandos padrão, mesmo que os apelidos comandos padrão sejam, bem, padrão .
Sério, porém, essas são apenas advertências. Se você confia em si mesmo para não cair em nenhum desses poços de destruição, basta tomar cuidado e seguir em frente.
Pessoalmente, eu tenho muito poucos comandos padrão; Uso pequenas variações porque sou um pouco paranóica e retentiva anal. Mas um bom uso que encontrei para isso é em relação aos sistemas nos quais costumo fazer login como root ou outro usuário, e há algumas coisas que não quero que sejam executadas acidentalmente / preguiçosamente como root:
ou
fonte
Como um exemplo extremo, deixe-me usar o alias de um comando padrão para ilustrar por que os comandos padrão de aliasing podem ser prejudiciais:
Obviamente, isso é ruim porque causaria uma surpresa desagradável algum dia. Da mesma forma, a substituição de comandos padrão por aliases acabará por causar uma surpresa infeliz quando você menos espera.
Mas deixe-me apresentar um cenário comum que acontecerá com quase todos os administradores do Unix à medida que avançam em sua carreira:
Algum dia no futuro, você iniciará um novo trabalho e trabalhará em um novo sistema que foi configurado por outras pessoas. Serão três horas da manhã de sábado e você não está pensando direito e é propenso a cometer erros. Seu ambiente padrão não estará disponível. Na verdade, você é raiz.
Diante disso, você vai se lembrar de que
rm
não tem aliasrm -i
? Você procurará seus aliases especiais sempre que fizer login na caixa? Se você mudar o ambiente da raiz, seus colegas de trabalho ficarão felizes com a mudança?Estou sinceramente em cima do muro sobre isso. Trabalhei em milhares de sistemas em minha carreira e, se modificasse o ambiente em todos esses sistemas, seria difícil ver o valor.
Fazer alias
rm
pararm -i
é muito comum e já vi muitos problemas, mas também causou muitas surpresas e horas de trabalho extra para recuperar arquivos excluídos acidentalmente.Então agora eu tento evitar aliasing comandos comuns do sistema. Em vez disso, uso aliases e funções para fazer coisas que o shell não pode fazer facilmente. O que costumo fazer agora é anexar uma carta extra ao alias, como:
E talvez eu deva me livrar do meu pseudônimo final, porque a adaptação a novas práticas leva tempo:
fonte
ls
pode ser mais conveniente do que lembrar dez aliases.rm
->rm -i
é muito melhor. Outro bom seria aquele que aliases rm para colocar as coisas em um~/.trash
Existem mais perigos para isso.
Por exemplo, se você usa o
shell-command
Emacs, pode achar que obtém o comando "your" (ou alias , mas não precisa encontrar umls
alias em um terminal tantas vezes antes de esquecer tudo sobre a configuração do alias, pensando em como qualquer outro comando ...) - na verdade (de volta ao Emacs), você obtém o comando (sem alias). O Emacs irá executá-lo sem problemas, então você pode até ficar cego para o que acabou de acontecer!Quanto a computadores e / ou sistemas diferentes, se você acha muito tedioso configurar
.rc
arquivos individuais para todos eles, você pode apenas ter um desses arquivos, mas comif
cláusulas a serem personalizadas.Por exemplo, em vez de avaliar cada função quando você as escreve, apenas quando tiver problemas com alguma delas, adicione-as à "lista negra", por último:
fonte
Renomear comandos padrão por aliases (isto é, as
rm=rm -i
coisas) certamente pode levar a surpresas onde o alias não está disponível. Eu prefiro não usar tal, e (por várias experiências amargas, amargas ;-) eu me tornei acustomed lendo cada comando duas vezes, e se érm
oumv
ou qualquer outra coisa três vezes potencialmente destrutiva. E esses apelidos levam a "rm foo" automático "ENTER" e " Opa !! de qualquer maneira (e custa um pressionamento de tecla extra a cada vez).Mas sou só eu. Se você não espera rodar em ambientes estranhos (outras máquinas, outros usuários, ...) e pode instalar seus aliases favoritos onde quer que esteja, vá à loucura. O Unix é conhecido por oferecer aos usuários corda mais do que suficiente para atirar em seus próprios pés.
fonte
As outras respostas são boas, mas todas analisam apenas como isso afeta você.
Deixe-me mudar um pouco a resposta de Stephanie Laswieski.
Supondo que você não seja onisciente, pode ser necessário que outra pessoa trabalhe em sua conta de usuário ou informe-o sobre como fazer algo.
Então, quando eles fazem algo ou dizem para você fazer isso, pode não funcionar como o esperado.
Na melhor das hipóteses, você terá que perder tempo explicando o que aconteceu (se você estiver lá e puder lembrar ou descobrir que o alias foi o que causou o problema).
Na pior das hipóteses, veja uma reviravolta no exemplo em uma das outras respostas: alias ls = 'rm -rf'.
fonte