rm -I для предотвращения случайного rm

5

Я только что создал alias rm="rm -I" , чтобы предотвратить случайную команду rm .

-I     prompt  once before removing more than three files, or when removing recursively.
       Less intrusive than -i, while still giving protection against most mistakes

Но это не сработает. Я не получаю подсказки, когда я использую rm -rf

    
задан Sourabh 02.12.2013 в 19:56
источник

2 ответа

9

Если вы снова прочитаете справку , вы увидите, что она говорит предыдущий --interactive . Это означает, что вы можете добавить -I после всех других аргументов (например, в конце строки), и это будет выполнено снова!

Для этого вам нужна функция вместо псевдонима, но просто вставьте ее где-нибудь в свой файл .bashrc (и др.), и вы будете золотыми:

function rm { /bin/rm "$@" -I; }

Возможно, более безопасный метод, чем это используется командой trash-cli trash-put . Он поместит вещи в каталог корзины вашего аккаунта, который может быть просмотрен / восстановлен / очищен в обычном режиме. Он также имеет фиктивные аргументы -r , -f и -i , поэтому он делает идеальный псевдоним:

alias rm="trash-put"
    
ответ дан Oli 02.12.2013 в 20:22
источник
6

Проблема заключается в том, что -f делает rm игнорирует любую интерактивную команду:

'-f'
'--force'
   Ignore nonexistent files and missing operands, and never prompt
   the user.  Ignore any previous '--interactive' ('-i') option.

Источник: info coreutils 'rm invocation'

    
ответ дан Braiam 02.12.2013 в 20:02