web-dev-qa-db-fra.com

rm -I pour éviter la rm accidentelle

Je viens de créer alias rm="rm -I" pour éviter une commande rm accidentelle.

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

Mais ça ne marche pas. Je ne reçois aucune invite lorsque j'utilise rm -rf

5
Sourabh

Si vous lisez à nouveau l'aide vous verrez qu'il est dit précédent --interactive. Cela signifie que vous pouvez ajouter un -I après tous les autres arguments (comme à la fin de la ligne) et il sera à nouveau honoré!

Pour ce faire, vous avez besoin d'une fonction au lieu d'un alias, mais collez-la quelque part dans votre .bashrc (et al) et vous êtes en or:

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

Une méthode peut-être plus sûre que celle-ci consiste à utiliser trash-cli's trash-put commande. Il mettra des éléments dans le répertoire de la corbeille de votre compte qui peuvent être examinés/restaurés/vidés normalement. Il a aussi un mannequin -r, -f et, -i arguments afin de rendre possible un alias parfait:

alias rm="trash-put"
9
Oli

Le problème ici est que -f fait rm ignorer toute commande interactive:

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

La source: info coreutils 'rm invocation'

6
Braiam