Comment faire pour supprimer l'erreur message d'une commande?
Comment puis-je supprimer les messages d'erreur pour une commande shell?
Par exemple, s'il y a seulement jpg
les fichiers dans un répertoire, l'exécution de ls *.zip
donne un message d'erreur:
$ ls *.zip
ls: cannot access '*.zip': No such file or directory
Est-il une option pour supprimer de tels messages d'erreur? Je veux utiliser cette commande dans un script bash, mais je veux cacher toutes les erreurs.
- Si vous utilisez
ls
pour obtenir une liste de noms de fichiers à traiter, ne pas. - Vous pouvez utiliser
shopt -s nullglob
de sorte que la goutte devient nulle. Bien sûr, ça fonctionnerait très bien avec ls, car il serait de retour tous les fichiers dans le répertoire. Il pourrait fonctionner si vous utilisez quelque chose commefor file in *.zip
- pour supprimer message d'erreur juste rediriger stderr à
/dev/null
, comme dansls *.zip 2>/dev/null
Vous devez vous connecter pour publier un commentaire.
La plupart des commandes Unix, y compris
ls
, va écrire la sortie standard vers la sortie standard et les messages d'erreur vers stderr de sorte que vous pouvez utiliser bash redirection de jeter les messages d'erreur tout en laissant la sortie régulière en place:sera redirection tous les messages d'erreur sur stderr vers /dev/null (c'est à dire que vous ne les vois pas)
Note la valeur de retour (donné par
$?
) continuent de refléter qu'une erreur s'est produite.Pour supprimer message d'erreur et aussi de retour de sortie de statut de zéro à ajouter || vrai, par exemple:
ls
, il peut être préférable de faire précédertrue ||
à lals
commande?true || ls
va d'abord exécutertrue
, être heureux avec le résultat et pas même de penser à l'exécution dels