Як крайній приклад, дозвольте мені просто псевдонімом стандартну команду, щоб проілюструвати, чому згладжування стандартних команд може бути шкідливим:
alias ls='rm'
Очевидно, що це погано, тому що це може викликати неприємний сюрприз одного дня. Так само заміна стандартних команд на псевдоніми врешті призведе до невдалого сюрпризу, коли ви найменше цього очікуєте.
Але дозвольте представити загальний сценарій, який відбудеться майже з кожним адміністратором Unix, коли вони просуваються у своїй кар'єрі:
Колись у майбутньому ви розпочнете нову роботу і будете працювати над новою системою, яку створили інші. У суботу буде три години ранку, і ви не думаєте прямо і схильні робити помилки. Ваша стандартна середовище буде недоступною. Насправді ви корінь.
З огляду на це, чи пам’ятаєте ви, що rm
це не чуже rm -i
? Чи збираєтесь ви перевіряти свої спеціальні псевдоніми щоразу, коли ви входите в поле? Якщо ви зміните середовище root, чи будуть ваші колеги задоволені вашими змінами?
Я чесно на паркані з цього приводу. Я працював над тисячами систем у своїй кар’єрі, і якби я змінив середовище для всіх цих систем, було б важко побачити значення.
Aliasing 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
прапор.