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:
alias ls='rm'
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 alias rm -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
para rm -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:
# List long, with color or special characters, depending on OS
alias ll='ls -l'
# Long, with metacharacters, show dotfiles, don't show . and ..
alias lll='ls -lA'
# Long, with metacharacters, show dotfiles, show . and ..
alias lla='ls -la'
# List just the dotfiles
alias l.='ls -l -Ad .????*'
# Useful greps
#alias hgrep='history |grep ${*} |grep -v $$'
alias greph='history |grep ${*}'
alias grepp='ps -ef |grep ${*}'
### Highlight some text.
# From http://unix.stackexchange.com/questions/366/convince-grep-to-output-all-lines-not-just-those-with-matches/367#367
highlight () { grep --color -E "$1|$" $2 ; }
E talvez eu deva me livrar do meu pseudônimo final, porque a adaptação a novas práticas leva tempo:
# For safety!
alias rm='rm -i'
rm -i
, ele me treina um pouco mais para adicionar automaticamente a-f
sinalização.