Come esempio estremo, lasciatemi solo un alias un comando standard per illustrare perché l'alias dei comandi standard può essere dannoso:
alias ls='rm'
Ovviamente, questo è un male perché un giorno provocherebbe una brutta sorpresa. Allo stesso modo, la sostituzione dei comandi standard con alias alla fine porterà a una sfortunata sorpresa quando meno te lo aspetti.
Ma lasciami presentare uno scenario comune che accadrà a quasi tutti gli amministratori Unix mentre avanzano nella loro carriera:
Un giorno in futuro inizierai un nuovo lavoro e lavorerai su un nuovo sistema creato da altri. Saranno le tre del mattino di sabato e non stai pensando direttamente e sei incline a fare errori. Il tuo ambiente standard non sarà disponibile. In effetti, sei root.
Dato questo, hai intenzione di ricordare che rm
non è aliasrm -i
? Controllerai i tuoi alias speciali ogni volta che accedi alla casella? Se cambi l'ambiente di root, i tuoi colleghi saranno contenti del tuo cambiamento?
Sono sinceramente a questo proposito. Ho lavorato su migliaia di sistemi nella mia carriera e se modificassi l'ambiente su tutti questi sistemi, sarebbe difficile vederne il valore.
Aliasing rm
per rm -i
è molto comune e ho visto che a prevenire molti problemi, ma ha anche causato molte sorprese e ore di lavoro extra per recuperare i file eliminati accidentalmente.
Quindi ora provo a evitare l'alias dei comandi di sistema comuni. Invece uso alias e funzioni per fare cose che la shell non può fare facilmente. Quello che tendo a fare ora è allegare una lettera in più all'alias, come:
# 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 forse dovrei davvero sbarazzarmi del mio alias finale, perché l'adattamento a nuove pratiche richiede tempo:
# For safety!
alias rm='rm -i'
rm -i
, mi allena un po 'di più per aggiungere automaticamente la-f
bandiera.