
Некоторое время назад я читал (не могу найти ссылку), что использование такого псевдонима alias rm="rm -i"
очень плохо.
Существуют ли исторические доказательства или объяснение этого факта с точки зрения здравого смысла?
Я предполагаю, что это формирует у пользователя плохую привычку полагаться на запрос подтверждения для проверки своей команды, что может привести к катастрофе, если он сделает это в другом профиле, не имеющем псевдонима.
решение1
Ты прав.
Это плохо, потому что вы привыкаете к этому. Если вы находитесь в системе, в которой этого нет, и вы rm
, он немедленно начинает удалять, и вы задаетесь вопросом, что происходит.
Многие пользователи привыкли подключаться к разным системам по SSH, поэтому использование большого количества разных систем, иногда без настройки персонализированных учетных записей пользователей (включая псевдонимы), является довольно распространенным явлением.
Вместо этого используйте eg alias rmi='rm -i'
и научитесь использовать его. Если он не настроен на другой системе, вы не удалили файлы случайно и всегда можете вернуться к вводу полной команды.
решение2
Как сказал @Daniel, это не вредно само по себе, кроме как приучать вас ожидать, что это будет там. Фактически, это настройка по умолчанию на CentOS (и, как я полагаю, RHEL — слишком давно я им не пользовался) машинах,и это огромная боль в тучусе. В оставшееся время на этом концерте я набирал /bin/rm, чтобы избежать настройки «Linux для людей, которым не следует иметь права root».
решение3
Я думаю, что большая опасность в том, что люди могут полагаться на что-то вроде этого, чтобы отфильтровать глоб. Представьте, что вы хотите удалить некоторые изображения из каталога, но не все:
rm -i pics/*.jpg
Вы могли бы использовать это, чтобы вручную отфильтровать шар, что было бы вполне разумно. Но если бы вы дали ему псевдоним и использовали его, rm
и случайно попали в оболочку без этого псевдонима и попробовали... вы просто удалили все свои фотографии, упс!
Лично я тоже считаю, что этот псевдоним вреден для моего кровяного давления ;). Но это только мое мнение.
решение4
Этомногоменее вредно, исходя из моего опыта работы с сотнями пользователей в прошлом:
rm () # must be a function, must require single answer for all targets
{
ls -FCsd "$@"
local reply ; echo -n 'remove[ny]? ' ; read reply
if [ "_$reply" = "_y" ] ; then
/bin/rm -rf "$@" ; else echo '(cancelled)'
fi
}
- Пользователи обучены правильно использовать подстановочные знаки, а не только «*», а затем полагаться на подсказки y/n для выбора файлов.
- Условие использования правильных подстановочных знаков часто спасало от катастрофы, когда они использовались
rm
в каком-то другом контексте, в котором отсутствовала либо эта функция, либоrm -i
псевдоним. - Я потратил меньше времени на восстановление файлов, в которых пользователь набрал «y» слишком много раз
- Пользователям нужно ответить только один раз, что дает четкий положительный отзыв об использовании.
- Control-c прерывает работу и сообщается, что ничего не происходит
- Не сценарий, поэтому реальность
rm
остается нетронутой, не затрагивая другие программы.
Стиль кода в основном sh-совместимый (за исключением использования echo .... | tr -d '\012'
для pre-bash shells), не стесняйтесь делать свой собственный, более bash-специфичный. Я не публикую сам код, а делюсьПользовательский опытперемены, которые с этим связаны.