Предотвращение случайного удаления каталогов. Создание псевдонима, содержащего параметры?

Я использую псевдоним, чтобы предотвратить случайное удаление файлов, и я хотел бы сделать что-то подобное для каталогов.

Для файлов у меня есть следующее, добавленное в мой .bashrc :

 alias rm="rm -i" 

Я также хотел бы предотвратить случайное удаление каталога, который я попытался сделать:

 alias rm -rf="rm -rfi" 

и это:

 alias "rm -rf"="rm -rfi" 

Но никто не работает. Какие-либо предложения?

2 Solutions collect form web for “Предотвращение случайного удаления каталогов. Создание псевдонима, содержащего параметры?”

Из bash (1):

Алиасы

[…] Первое слово каждой простой команды, если оно не зарегистрировано, проверяется на наличие псевдонима […] Символы […] и любые метасимволы оболочки или цитируемые выше символы могут не отображаться появляются в псевдониме.

Таким образом, псевдонимы могут быть только одним словом без кавычек.

Использование обоих -f и -i в вызове rm также не имеет большого смысла, поскольку они несколько противоречивы (rm (1)):

-f, –force игнорировать несуществующие файлы и аргументы, никогда не запрашивать

-i перед каждым удалением

Но вот что хорошо: ваш псевдоним rm фактически используется, даже когда вы вызываете rm -r , потому что первое слово – rm – имеет псевдоним – rm -i , поэтому его заменяет это!

 $ alias rm bash: alias: rm: not found $ alias rm='rm -i' $ mkdir test $ rm -r test rm: remove directory 'test'? 

/ edit: Рафаэль Аренс также упомянул в комментариях, что использование -f (force) не является необходимым для удаления каталогов (как это уже видно в моем примере), -r (рекурсивный) достаточно один:

-r, -R, –рекурсивно удалять каталоги и их содержимое рекурсивно

Псевдонимы rm опасны. Как только вы на коробке, у которой нет этих псевдонимов, вы нанесете некоторый урон.

Что касается «предотвращения случайного удаления каталога», то для начала используется флаг -r .

Пожалуйста, не переопределяйте такие команды, вы никогда не знаете, какие сценарии допущений будут делать. Если нужно, выберите другое имя, кроме rm , иначе измените что-то в своем rm -rf которое не позволяет использовать rm -rf с пренебрежением.

  • Эффективное удаление большого каталога, содержащего тысячи файлов
  • Насколько безопасно выводить на <dir> одновременно с rm <dir> / *
  • Как удалить файлы, символические в одной папке, но оставить свои подкаталоги без изменений?
  • Как удалить файл без имени
  • Как удалить все файлы в текущем каталоге за исключением последних двух
  • Как заставить создать символическую ссылку?
  • Как безопасно удалить жесткую ссылку в домашнюю папку?
  • Удалить все «nohup.out» в рекурсивном каталоге
  • Найти и удалить все те же файлы (по имени) между двумя каталогами
  • Не удается удалить файл - разрешено разрешение - почему?
  • Удаление файлов, за исключением того, что имя содержит подстроку
  • Linux и Unix - лучшая ОС в мире.