206 votes

Comment prévenir les rm de signaler qu'un fichier n'a pas été trouvé?

Je suis l'aide d' rm dans un script BASH pour supprimer de nombreux fichiers. Parfois, les fichiers ne sont pas présents, de sorte qu'il rapporte de nombreuses erreurs. Je n'ai pas besoin de ce message. J'ai cherché dans la page de manuel d'une commande à faire rm calme, mais la seule option que j'ai trouvé est -f, ce qui, d'après la description, "ignorer les fichiers inexistants, ne jamais demander", semble être le bon choix, mais le nom ne semblent pas correspondre, donc je suis concerné, cela pourrait avoir des conséquences inattendues.

  • Est l' -f option de la façon correcte de faire taire rm? Pourquoi n'est-il pas appelé -q?
  • Cette option de faire autre chose?

260voto

chepner Points 54078

L'utilisation principale de l' -f est de forcer la suppression de fichiers pas être enlevé à l'aide d' rm par lui-même (comme un cas spécial, il "supprime" inexistant fichiers, donc la suppression du message d'erreur).

Vous pouvez aussi rediriger le message d'erreur à l'aide de

$ rm file.txt 2> /dev/null

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

91voto

Satya Points 4894

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

34voto

technosaurus Points 1980

-f est le bon drapeau, mais pour l'opérateur de test, pas de 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...)

20voto

vimdude Points 988

\rm -f file ne sera jamais un rapport non trouvé.

8voto

Idelic Points 4196

Aussi loin que l' rm -f faire "autre chose", il ne force pas (-f est une abréviation de" --force) silencieux en retrait dans les situations où l' rm seraient autrement vous demander confirmation. Par exemple, lorsque vous essayez de supprimer un fichier n'est pas accessible en écriture à partir d'un répertoire accessible en écriture.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X