Dans mon script Shell, j'ai eu ces lignes:
rm tempfl.txt
rm tempfl2.txt
Si ceux-ci n'existent pas, je reçois les messages d'erreur suivants:
rm: tempfl2.txt: No such file or directory
rm: tempfl.txt: No such file or directory
Existe-t-il un moyen de ne supprimer que ces messages même s'ils n'apparaissent pas toujours, car les fichiers peuvent exister?
Vous avez deux options:
Supprimer les avertissements rm
$ rm tempfl.txt 2> /dev/null
Redirige la sortie du script vers /dev/null
$ ./myscript.sh 2> /dev/null
Ce dernier a l'inconvénient de manquer tous les autres messages d'avertissement produits par votre script.
Essayez cette commande:
rm -f tempfl.txt
l'option -f agit comme ceci:
-f, --force ignore nonexistent files, never Prompt
La commande ne signale pas non plus de code d'erreur non nul si le fichier n'existe pas.
vous devriez rediriger tous les messages d'erreur vers/dev/null comme
rm tempfl2.txt 2> /dev/null
Lorsque les autres réponses indiquent, vous pouvez utiliser command 2> /dev/null
pour supprimer la sortie d'erreur de command
Mais que se passe-t-il ici?
>
est l'opérateur utilisé pour rediriger la sortie. 2
est une référence au flux de sortie d'erreur standard, c'est-à-dire 2>
= sortie d'erreur de redirection.
/dev/null
est le 'périphérique nul' qui englobe toutes les entrées qui lui sont fournies. Vous pouvez combiner les deux pour supprimer efficacement la sortie d'une commande.
Référence complète:
> /dev/null
jeter stdout 1> /dev/null
jeter stdout 2> /dev/null
jeter stderr &> /dev/null
jeter à la fois stdout et stderr Ajout aux réponses ci-dessus: Il est probablement préférable de conserver les messages d'erreur (comme une autorisation refusée ou une autre). Testez l’existence du fichier avant de le supprimer:
[ -f file.txt ] && rm file.txt
Cela suppose une Bourne comme Shell, par exemple, bash. Ce qui précède présente l’avantage supplémentaire de ne pas essayer de supprimer un répertoire, ce que rm
ne peut pas faire.
Nous pouvons utiliser 2> /dev/null
pour supprimer l’erreur de sortie et || true
pour garantir un état de sortie réussi:
rm foo
=> rm: cannot remove ‘foo’: No such file or directory
rm foo 2> /dev/null
echo $?
=> 1
rm foo 2> /dev/null || true
echo $?
=> 0
Si vous utilisez la commande dans un script shell, un fichier makefile, etc., vous en avez peut-être besoin.