À titre d'exemple extrême, permettez-moi simplement d'alias une commande standard pour illustrer pourquoi l'aliasing des commandes standard peut être nuisible:
alias ls='rm'
Évidemment, c'est mauvais car cela provoquerait un jour une mauvaise surprise. De même, le remplacement des commandes standard par des alias conduira éventuellement à une surprise malheureuse lorsque vous vous y attendez le moins.
Mais permettez-moi de présenter un scénario commun qui arrivera à presque tous les administrateurs Unix à mesure qu'ils avancent dans leur carrière:
Un jour, vous commencerez un nouvel emploi et travaillerez sur un nouveau système qui a été mis en place par d'autres. Il sera trois heures du matin samedi et vous ne pensez pas droit et êtes enclin à faire des erreurs. Votre environnement standard ne sera pas disponible. En fait, vous êtes root.
Compte tenu de cela, allez-vous vous rappeler que ce rm
n'est pas un alias rm -i
? Allez-vous vérifier vos alias spéciaux chaque fois que vous vous connectez à la boîte? Si vous changez l'environnement de root, vos collègues seront-ils satisfaits de votre changement?
Je suis honnêtement sur la clôture à ce sujet. J'ai travaillé sur des milliers de systèmes au cours de ma carrière, et si je modifiais l'environnement sur tous ces systèmes, il serait difficile d'en voir la valeur.
Aliasing rm
à rm -i
est très commun et je l' ai vu à prévenir de nombreux problèmes, mais il a également provoqué de nombreuses surprises et des heures de travail supplémentaire pour récupérer des fichiers supprimés accidentellement.
Alors maintenant, j'essaie d'éviter d'aliaser les commandes système courantes. Au lieu de cela, j'utilise des alias et des fonctions pour faire des choses que le shell ne peut pas faire facilement. Ce que j'ai tendance à faire maintenant, c'est d'attacher une lettre supplémentaire à l'alias, comme:
# 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 ; }
Et peut-être que je devrais vraiment me débarrasser de mon dernier alias, car l'adaptation aux nouvelles pratiques prend du temps:
# For safety!
alias rm='rm -i'
rm -i
, cela m'entraîne un peu plus à ajouter automatiquement le-f
drapeau.