`alias rm="rm -i"` считается вредоносным?

`alias rm="rm -i"` считается вредоносным?

Некоторое время назад я читал (не могу найти ссылку), что использование такого псевдонима 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-специфичный. Я не публикую сам код, а делюсьПользовательский опытперемены, которые с этим связаны.

Связанный контент