В качестве крайнего примера, позвольте мне дать псевдоним стандартной команды, чтобы проиллюстрировать, почему псевдоним стандартных команд может быть вредным:
alias ls='rm'
Очевидно, это плохо, потому что однажды это вызовет неприятный сюрприз. Аналогично, замена стандартных команд псевдонимами в конечном итоге приведет к неприятному сюрпризу, когда вы меньше всего этого ожидаете.
Но позвольте мне представить общий сценарий, который случится почти с каждым администратором Unix по мере продвижения в их карьере:
Когда-нибудь в будущем вы начнете новую работу и будете работать над новой системой, созданной другими. В субботу будет три часа ночи, и вы не думаете прямо и склонны делать ошибки. Ваша стандартная среда не будет доступна. На самом деле, вы root.
Учитывая это, вы собираетесь помнить, что rm
не псевдоним rm -i
? Собираетесь ли вы проверять ваши специальные псевдонимы каждый раз, когда вы входите в окно? Если вы измените среду root, будут ли ваши коллеги довольны вашим изменением?
Я честно говоря об этом. В своей карьере я работал над тысячами систем, и если бы я действительно изменил среду на всех этих системах, трудно было бы увидеть ценность.
Псевдоним 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
флаг.