Redirection vers des fichiers

LinuxBeginner
Pratiquer maintenant

Introduction

Par défaut, les commandes Linux affichent tout à l’écran. Mais que faire si vous souhaitez enregistrer ces données ?

Ce processus s’appelle la redirection. Imaginez que vous indiquiez une « adresse de réexpédition » pour votre courrier.

C’est une bonne façon de comprendre la syntaxe du shell en général : au lieu de modifier ce que fait fondamentalement une commande, la redirection modifie la destination de son entrée ou de sa sortie.

Dans ce laboratoire, vous découvrirez trois façons de contrôler la destination des données :

  1. Rediriger et écraser (>) : enregistre la sortie dans un fichier en remplaçant son contenu existant.
  2. Rediriger et ajouter (>>) : ajoute la sortie à la fin d’un fichier.
  3. Rediriger les erreurs (2>) : capture uniquement les messages d’erreur.

Rediriger la sortie (écrasement)

Le signe supérieur à > est l’opérateur d’écrasement.

De nombreux débutants apprennent que > signifie « enregistrer dans un fichier », mais il est plus précis de le comprendre comme « envoyer la sortie standard vers ce fichier et remplacer son contenu précédent ». Cette formulation devient importante lorsque vous commencez à combiner des commandes avec davantage de précaution.

Il indique à Linux : « Prenez l’entrée de cette commande et écrivez-la dans ce fichier. Si le fichier existe, effacez d’abord son contenu. »

Accédez à votre répertoire de projet :

cd ~/project

Redirigez la sortie vers output.txt :

echo "Hello, Linux." > output.txt

Rien ne s’affiche à l’écran. Le texte a été écrit dans le fichier. Vérifiez-le :

cat output.txt

Voyez maintenant pourquoi nous parlons d’« écrasement ». Exécutez les commandes suivantes :

echo "This is new content." > output.txt
cat output.txt

L’ancien texte « Hello, Linux. » a disparu. L’opérateur > a vidé le fichier avant d’y écrire le nouveau contenu.

C’est pourquoi vous devez utiliser la redirection avec la même prudence qu’une modification de fichier. Une commande courte peut remplacer immédiatement le contenu d’un fichier existant.

Ajouter à la sortie (>>)

Souvent, vous ne voulez pas détruire les données : vous voulez les compléter. Utilisez pour cela le signe supérieur à double >>.

Il s’agit d’une instruction d’ajout.

Ajoutez une nouvelle ligne à output.txt :

echo "This line is appended." >> output.txt
cat output.txt

Vous devriez voir les deux lignes.

Le contenu d’origine est conservé. Recommencez :

echo "Another line." >> output.txt
cat output.txt

L’opérateur >> est particulièrement adapté aux journaux.

L’ajout est important, car de nombreux fichiers utilisés pour les opérations grossissent au fil du temps au lieu d’être recréés depuis zéro. Les journaux, les rapports et les historiques de commandes suivent souvent une logique consistant à « ajouter à la fin ».

Rediriger les erreurs (2>)

Comme vous l’avez appris, Linux sépare la « sortie normale » (stdout) de la « sortie d’erreur » (stderr).

Les opérateurs > et >> traitent uniquement la « sortie normale ». Ils ignorent les erreurs.

C’est ici que le modèle des flux présenté dans le laboratoire précédent devient concret. Si la sortie et les erreurs sont des flux distincts, Linux peut les acheminer vers des destinations différentes.

Pour capturer les erreurs, utilisez 2>. (L’identifiant de la sortie d’erreur standard est 2.)

Essayez d’afficher le contenu d’un répertoire inexistant :

ls /missing_directory 2> error.log

Rien ne s’affiche à l’écran. L’erreur a été capturée et envoyée dans error.log.

Consultez son contenu :

cat error.log

Vous verrez le message d’erreur enregistré dans le fichier.

Le 2 de 2> vient du numéro conventionnel du descripteur de fichier associé à la sortie d’erreur standard. Vous n’avez pas encore besoin de mémoriser tous les descripteurs de fichiers, mais il est utile de savoir que ces numéros désignent les canaux de flux du shell.

Résumé

Vous maîtrisez maintenant le contrôle des flux de données :

  • > (écrasement) : enregistre la sortie dans un fichier en supprimant son contenu précédent.
  • >> (ajout) : ajoute la sortie à la fin d’un fichier en conservant l’historique.
  • 2> (redirection des erreurs) : capture les messages d’erreur.

Ces outils vous permettent d’enregistrer efficacement les résultats des commandes.