J'utilise rm
dans un script BASH pour supprimer de nombreux fichiers. Parfois, les fichiers ne sont pas présents, ce qui génère de nombreuses erreurs. Je n'ai pas besoin de ce message. J'ai cherché dans la page de manuel une commande pour rendre rm
silencieuse, mais la seule option que j'ai trouvée est -f
, qui, de la description, "ignore les fichiers inexistants, jamais invite", semble être la bonne choix, mais le nom ne semble pas correspondre, alors je crains que cela puisse avoir des conséquences imprévues.
-f
est le bon moyen de faire taire rm
? Pourquoi ne s'appelle-t-il pas -q
?La principale utilisation de -f
consiste à forcer la suppression de fichiers qui ne seraient pas supprimés à l'aide de rm
par lui-même (dans un cas spécial, elle "supprime" les fichiers inexistants, supprimant ainsi le message d'erreur). .
Vous pouvez également simplement rediriger le message d'erreur à l'aide de
$ 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 effectivement été supprimé ou non.
Oui, -f
est l'option la plus appropriée pour cela.
-f est le bon drapeau, 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, un nœud de périphérique, etc.)
\rm -f file
ne signalera jamais non trouvé.
En ce qui concerne rm -f
faire "toute autre chose", il force (-f
est un raccourci pour --force
) la suppression silencieuse dans les situations où rm
vous demanderait autrement une confirmation. Par exemple, lorsque vous essayez de supprimer un fichier que vous ne pouvez pas écrire dans un répertoire que vous pouvez écrire.