Bash:
Écrire sur l'erreur standard

Comment faire :

En Bash, vous utilisez >&2 pour rediriger la sortie vers stderr. Voici un exemple de base :

echo "Ceci est un message normal"
echo "Ceci est un message d'erreur" >&2

L’exécution de ce script affichera les deux messages dans la console, mais si vous les redirigez, vous pouvez séparer le stdout du stderr. Par exemple :

bash script.sh > output.txt 2> error.txt

output.txt contiendra "Ceci est un message normal", tandis que error.txt capturera "Ceci est un message d'erreur".

Pour un cas d’utilisation pratique, considérez un script qui traite des fichiers et signale une erreur si un fichier n’existe pas :

filename="exemple.txt"

if [ ! -f "$filename" ]; then
    echo "$filename n'existe pas !" >&2
    exit 1
else
    echo "Traitement de $filename"
fi

Exemple de sortie directement dans la console lorsque exemple.txt n’existe pas :

exemple.txt n'existe pas !

Il n’existe pas de bibliothèques tierces directes en Bash pour gérer stderr, car la redirection est nativement prise en charge et généralement suffisante. Cependant, pour des applications complexes, des cadres de journalisation ou des outils de journalisation externes comme syslog ou log4bash peuvent être incorporés pour gérer aussi bien stdout que stderr de manière plus efficace.