Bash - Rediriger à la fois la sortie standard et l’erreur standard vers le même fichier
Le shell Bash est le shell le plus populaire sur les systèmes Linux, et pour l’utiliser efficacement, vous avez besoin d’un peu de connaissances sur les redirections de shell Bash. C’est aussi une étape essentielle dans l’apprentissage du script Bash.
Dans ce guide, nous allons montrer comment rediriger la sortie standard et l’erreur standard vers le même fichier sur la ligne de commande de l’interpréteur de commandes Bash. Cela comprendra plusieurs exemples afin que vous puissiez choisir la bonne méthode dans n’importe quel scénario.
Dans ce tutoriel, vous allez apprendre :
- Comment rediriger la sortie standard et l’erreur standard vers le même fichier
- Comment rediriger la sortie standard et l’erreur standard vers le fichier et le terminal
- Comment rediriger la sortie standard et l’erreur standard vers /dev/null
Divers exemples Bash pour rediriger la sortie standard et l’erreur standard vers le même fichier
Redirection de la sortie standard et de l’erreur standard
Voyons d’abord comment rediriger une sortie standard vers un fichier. Si vous avez déjà ces bases Bash, n’hésitez pas à passer aux exemples de commandes.
Vous utilisez normalement >
pour la redirection, et pour l’ajouter à un fichier existant, vous utiliseriez >>
.
echo "linuxconfig.org" > new-file.txt
AND
echo "linuxconfig.org" >> existing-file.txt
Avec ces commandes, la sortie standard est redirigée vers le fichier et l’erreur standard s’affiche à l’écran. Si vous débutez avec Linux, la « sortie standard » n’est que la sortie habituelle et attendue de l’exécution d’une commande ou d’un script, et l'"erreur standard » est tous les messages d’erreur qui se produisent.
Pour rediriger l’erreur standard à la place, nous pouvons utiliser 2>
. Cela fera apparaître la sortie standard sur notre écran et enverra tous les messages d’erreur dans un fichier.
echo "linuxconfig.org" 2> new-file.txt
Une fois les bases à l’écart, nous allons maintenant couvrir divers exemples de commandes pour rediriger la sortie standard et l’erreur standard vers le même fichier.
Pour rediriger la sortie standard et l’erreur standard vers le même fichier, utilisez la syntaxe de commande suivante. Plus précisément, ajoutez
2>&1
à la fin de votre commande habituelle.echo "linuxconfig.org" > new-file.txt 2>&1
Un moyen légèrement plus simple d’obtenir cette fonctionnalité est d’utiliser l’opérateur
&>
. Notez que cela fonctionne bien dans Bash et zsh, mais pas dans les autres shells, alors utilisez l’exemple précédent pour une compatibilité maximale avec d’autres systèmes.echo "linuxconfig.org" &> new-file.txt
Pour ajouter une sortie standard et une erreur standard à un fichier qui existe déjà, utilisez la même syntaxe que ci-dessus, mais avec l’opérateur de redirection
>>
.echo "linuxconfig.org" >> existing-file.txt 2>&1
Pour supprimer la sortie standard et l’erreur standard de votre terminal, et éviter de générer également un fichier, vous pouvez les rediriger vers
/dev/null
.echo "linuxconfig.org" > /dev/null 2>&1
Pour rediriger la sortie standard vers un fichier et rediriger l’erreur standard vers un autre fichier, utilisez la syntaxe suivante.
echo "linuxconfig.org" 2> std-err.txt 1> std-out.txt
-
Si vous souhaitez rediriger la sortie standard et l’erreur standard vers le même fichier, tout en les voyant tous les deux dans votre terminal, nous pouvons obtenir un peu d’aide de la commande
tee
.echo "linuxconfig.org" 2>&1 | tee new-file.txt
Si vous voulez voir la sortie standard et l’erreur standard sur votre écran, tout en les ajoutant au même fichier, nous pouvons utiliser l’option
-a
(ajouter) avecte
.echo "linuxconfig.org" 2>&1 | tee -a existing-file.txt
Réflexions finales
Dans ce guide, nous avons vu comment rediriger à la fois la sortie standard et l’erreur standard vers le même fichier dans Bash. Cela incluait plusieurs opérateurs Bash différents, selon que nous voulions créer un nouveau fichier ou l’ajouter à un fichier existant. Nous avons également appris à utiliser la commande tee
afin de voir la sortie standard et l’erreur standard sur notre terminal tout en les écrivant dans un fichier. Vous êtes maintenant un expert dans la redirection de la sortie standard et de l’erreur standard vers un fichier dans Bash, et vous êtes d’autant plus proche de maîtriser entièrement le shell.