Lassen Sie mich als extremes Beispiel einen Standardbefehl aliasen, um zu veranschaulichen, warum das Aliasen von Standardbefehlen schädlich sein kann:
alias ls='rm'
Offensichtlich ist dies schlecht, weil es eines Tages eine böse Überraschung verursachen würde. Ebenso wird das Ersetzen von Standardbefehlen durch Aliase zu einer unglücklichen Überraschung führen, wenn Sie es am wenigsten erwarten.
Aber lassen Sie mich ein allgemeines Szenario vorstellen, das fast jedem Unix-Administrator im Laufe seiner Karriere passieren wird:
Eines Tages werden Sie einen neuen Job beginnen und an einem neuen System arbeiten, das von anderen eingerichtet wurde. Es ist drei Uhr morgens am Samstag, und Sie denken nicht klar und neigen dazu, Fehler zu machen. Ihre Standardumgebung ist nicht verfügbar. In der Tat sind Sie root.
rm
Werdet ihr euch vor diesem Hintergrund daran erinnern, dass es keinen Alias gibt rm -i
? Werden Sie jedes Mal, wenn Sie sich in die Box einloggen, nach Ihren speziellen Aliasnamen suchen? Wenn Sie die Umgebung von root ändern, werden Ihre Mitarbeiter mit Ihrer Änderung zufrieden sein?
Ich bin ehrlich gesagt auf dem Zaun darüber. Ich habe in meiner Karriere an Tausenden von Systemen gearbeitet, und wenn ich die Umgebung auf all diesen Systemen modifizieren würde, wäre es schwierig, den Wert zu erkennen.
Aliasing rm
auf rm -i
ist sehr verbreitet und ich habe gesehen, dass es viele Probleme verhindert, aber es hat auch viele Überraschungen und Stunden zusätzlicher Arbeit verursacht, um versehentlich gelöschte Dateien wiederherzustellen.
Deshalb versuche ich jetzt, Aliasing bei allgemeinen Systembefehlen zu vermeiden. Stattdessen verwende ich Aliase und Funktionen, um Dinge zu tun, die die Shell nicht leicht machen kann. Was ich jetzt tendenziell mache, ist einen zusätzlichen Brief an den Alias anzuhängen, wie:
# 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 ; }
Und vielleicht sollte ich meinen endgültigen Alias wirklich loswerden, da die Anpassung an neue Praktiken einige Zeit in Anspruch nimmt:
# For safety!
alias rm='rm -i'
rm -i
, trainiert es mich ein bisschen mehr, das-f
Flag automatisch hinzuzufügen .