`псевдонім rm =" rm -i "` вважається шкідливим?


17

Я прочитав деякий час тому (не можу знайти посилання), що використовувати такий псевдонім, як це alias rm="rm -i"було дуже погано.

Чи є історичні докази чи пояснення здорового глузду цьому факту?

Я б міг уявити, що це дає користувачеві погану звичку покладатися на запит підтвердження, щоб перевірити його команду, що може призвести до катастроф, якщо він буде робити це на іншому профілі, у якого немає псевдоніма.



Я думаю, я знайшов тему, яку ви згадали.
Даніель Бек

1
@Daniel справді найбільш прихильна відповідь цієї теми згадує цю погану практику, але це насправді не головна тема питання.
Дунаріл

Відповіді:


36

Ти маєш рацію.

Це погано, тому що ти звикаєш до цього. Якщо ви працюєте в системі, яка її не має, і ви rmїї відразу ж починаєте видаляти, і вам цікаво, що відбувається.

Багато користувачів звикли SSH'ing до різних систем; тому використання безлічі різних систем, іноді без налаштування персоналізованих облікових записів користувачів (включаючи псевдоніми), є досить поширеним явищем.

Натомість використовуйте, наприклад, alias rmi='rm -i'і навчіться користуватися цим. Якщо це не встановлено в іншій системі, ви випадково не видалили файли і завжди можете повернутися до введення повної команди.


4

Як сказав @Daniel, це не є шкідливим саме по собі, крім того, щоб навчити вас очікувати, що він буде там. Насправді, це налаштування за замовчуванням на CentOS (і, подовжуючи RHEL, я припускаю - було занадто давно, оскільки я використовував один) машин, і це величезна біль у тухусі . Решту часу на концерті я вводив / bin / rm, щоб уникнути налаштування "Linux для людей, які не мають доступу до root".


3
RHEL має це за замовчуванням, ви праві, принаймні системи, які я використовував.
Даніель Бек

4

Я думаю, велика небезпека полягає в тому, що люди можуть покластися на щось подібне для фільтрації глобуса. Уявіть, що ви хочете видалити деякі зображення з каталогу, але не всі:

rm -i pics/*.jpg

Ви можете використовувати це для фільтрації глобуса вручну, що було б цілком розумно. Але, якщо ви його псевдонімували, використовували rmі випадково приземлялися в оболонці без цього псевдоніма і спробували його ... ви просто видалили всі свої фотографії, ой!

Особисто я також вважаю цей псевдонім шкідливим для мого артеріального тиску;). Але це тільки я.


Гарний приклад. Звичайно, якщо вам подобається небезпека, або азартні ігри ..
Dunaril

2

На додаток до того, що сказав Деніел Бек, я опинився -fв обході -i, що є потенційно небезпечним, оскільки це призводить до використання rm -fта rm -rfбез потреби. Якимсь чином пов'язаний: спосіб запобігання rm -rfпроблемам полягає в тому, щоб створити файл під назвою "-i", як придушено у відповідь на це запитання: Як я можу запобігти випадковій rm -rf / *? .

Але знову ж таки, якби цього псевдоніма не було, я б не використовував -f, і вся справа не буде проблемою.


3
Схоже, ви знайшли спосіб зробити цю погану практику ще гіршою :)
Dunaril

0

Це набагато менш шкідливо, грунтуючись на моєму досвіді роботи із сотнями користувачів у минулому:

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'для попередніх ударів), сміливо робіть свій власний більш специфічний для bash. Я не розміщую інформацію, щоб поділитися самим кодом, але поділитися зміною досвіду користувача, яка пов'язана з ним.


Каміль: Моя відповідь включає, що rm -iісторично (за моїм досвідом наявності сотень користувачів) призводить до помилкового видалення файлу, і що включена функція навчила користувачів використовувати правильні підстановки, знижуючи рівень помилок. Тож я звернувся до ключових питань, що мучаються, rm -i і запропонував рішення заради зручності, і сам факт того, що пункти кулі знаходяться під функцією, не заважає їм бути германними.
Алекс Норт-Кіс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.