Comment empêcher rm de signaler qu'un fichier n'a pas été trouvé?

J'utilise rm dans un script BASH pour supprimer de nombreux fichiers. Parfois, les fichiers ne sont pas présents, donc il signale de nombreuses erreurs. Je n'ai pas besoin de ce message. J'ai cherché dans la page de manuel une commande pour rendre rm silencieux, mais la seule option que j'ai trouvée est -f, qui, d'après la description, "ignorer les fichiers inexistants, ne jamais demander", semble être le bon choix, mais le nom ne semble pas correspondre, donc je crains que cela puisse avoir des conséquences inattendues.

  • est l'option -f le bonne façon de faire taire rm? Pourquoi ne s'appelle-t-il pas -q?
  • Cette option fait-elle autre chose?
109
demandé sur Village 2012-04-20 17:43:00

6 réponses

, La principale utilisation de -f est de forcer la suppression de fichiers ne pas être supprimé en utilisant rm par lui - même (comme un cas particulier, il " supprime" fichiers inexistants, supprimant ainsi le message d'erreur).

Vous pouvez également rediriger le message d'erreur en utilisant

$ rm file.txt 2> /dev/null

(ou l'équivalent de votre système d'exploitation). Vous pouvez vérifier la valeur de $? immédiatement après avoir appelé rm pour voir si un fichier a été réellement supprimé ou non.

151
répondu chepner 2018-04-27 17:37:31

Oui -f est l'option la plus appropriée pour cela.

48
répondu Satya 2012-04-22 15:02:41

- f est le drapeau correct, mais pour l'opérateur de test, pas rm

[ -f "$THEFILE" ] && rm "$THEFILE"

Cela garantit que le fichier existe et est un fichier normal (pas un répertoire, nœud de périphérique etc...)

18
répondu technosaurus 2013-06-12 20:47:49

\rm -f file ne sera jamais signaler introuvable.

10
répondu vimdude 2013-06-12 20:10:54

En ce qui concerne rm -f faire" n'importe quoi d'autre", il force (-f est un raccourci pour --force) Suppression silencieuse dans les situations où rm vous demanderait autrement une confirmation. Par exemple, lorsque vous essayez de supprimer un fichier n'est pas accessible en écriture à partir d'un répertoire accessible en écriture.

3
répondu Idelic 2012-04-20 16:51:23

J'ai eu le même problème pour cshell. La seule solution que j'avais était de créer un fichier factice qui correspondait à un motif avant "rm" dans mon script.

-2
répondu Niranjan 2014-05-28 17:53:22