極端な例として、標準コマンドをエイリアスするだけで、標準コマンドのエイリアスが有害になる理由を説明します。
alias ls='rm'
明らかに、これはいつか厄介な驚きを引き起こすため、悪いことです。同様に、標準のコマンドをエイリアスに置き換えると、最終的には予期せぬことに不幸な驚きにつながります。
しかし、ほぼすべてのUnix管理者がキャリアを進めるにつれて起こる一般的なシナリオを紹介しましょう。
将来のある日、あなたは新しい仕事を始め、他の人によってセットアップされた新しいシステムで働きます。それは土曜日の朝の3時であり、あなたはまっすぐに考えておらず、間違いを犯しがちです。標準環境は使用できません。実際、あなたはルートです。
これを考えると、あなたrm
は別名ではないことを覚えていrm -i
ますか?ボックスにログインするたびに特別なエイリアスをチェックしますか?ルートの環境を変更した場合、同僚はあなたの変更に満足しますか?
正直言って、これについてはfenceにかかっています。私は自分のキャリアで数千のシステムに取り組んできましたが、これらすべてのシステムの環境を変更した場合、その価値を理解することは困難です。
エイリアシングrm
にすることはrm -i
非常に一般的であり、私はそれが多くの問題を防ぐ見てきましたが、それはまた、多くの驚きと誤って削除したファイルを回復するために余分な作業の時間を引き起こしました。
だから今、私は一般的なシステムコマンドのエイリアスを回避しようとします。代わりに、エイリアスと関数を使用して、シェルでは簡単にできないことを行います。私が今やろうとしているのは、次のような余分な文字をエイリアスに添付することです。
# 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 ; }
そして、新しいプラクティスに適応するには時間がかかるので、おそらく最終的なエイリアスを本当に取り除く必要があります。
# For safety!
alias rm='rm -i'
rm -i
であるシステムにつまずくたびに、自動的に-f
フラグを追加するよう少し訓練されます。