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 tairerm
? Pourquoi ne s'appelle-t-il pas-q
? - Cette option fait-elle autre chose?
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.
- 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...)
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.
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.