Redirection d'E/S Linux

LinuxBeginner
Pratiquer maintenant

Introduction

La redirection d'E/S (entrée/sortie) sous Linux est une fonctionnalité puissante qui vous permet de contrôler où les sorties des commandes sont envoyées et d'où proviennent les entrées des commandes. En maîtrisant la redirection d'E/S, vous pouvez enregistrer les sorties des commandes dans des fichiers, combiner plusieurs commandes et gérer efficacement les erreurs.

Dans ce labo (LabEx), vous apprendrez à utiliser différents opérateurs de redirection sous Linux. Vous pratiquerez la redirection de la sortie standard vers des fichiers, l'ajout de sorties à des fichiers existants et la gestion des messages d'erreur par redirection. Ces compétences sont essentielles pour tout utilisateur Linux et rendront vos opérations en ligne de commande plus efficaces et mieux organisées.

Redirection de sortie de base

Sous Linux, les commandes affichent généralement leur sortie à l'écran. Cependant, en utilisant la redirection d'E/S (entrée/sortie), vous pouvez envoyer cette sortie vers des fichiers à la place. L'opérateur de redirection le plus basique est >, qui envoie la sortie vers un fichier.

Commençons par créer une structure de répertoires pour nos exercices :

cd ~/project
mkdir -p io_practice
cd io_practice

Maintenant, voyons comment fonctionne la redirection. Lorsque vous utilisez la commande echo, elle affiche du texte à l'écran :

echo "Hello, Linux World!"

Vous devriez voir cette sortie :

Hello, Linux World!

Pour rediriger cette sortie vers un fichier au lieu de l'afficher à l'écran, utilisez l'opérateur > :

echo "Hello, Linux World!" > greeting.txt

Cette commande ne produit aucune sortie visible car le texte a été redirigé vers le fichier. Vérifions que le fichier a été créé et contient notre texte :

ls -l greeting.txt
cat greeting.txt

Vous devriez voir quelque chose comme :

-rw-r--r-- 1 labex labex 19 Oct 25 10:00 greeting.txt
Hello, Linux World!

L'opérateur > crée un nouveau fichier s'il n'existe pas, ou écrase complètement le fichier s'il existe déjà. Illustrons cela en écrasant notre fichier :

echo "New content replaces old content completely." > greeting.txt
cat greeting.txt

Sortie :

New content replaces old content completely.

Comme vous pouvez le voir, le contenu original a disparu, remplacé par le nouveau contenu.

Ajout de sortie à des fichiers

Parfois, vous souhaitez ajouter du contenu à un fichier sans écraser ce qui s'y trouve déjà. À cet effet, Linux propose l'opérateur >>, qui ajoute la sortie à la fin d'un fichier.

Ajoutons du texte à notre fichier greeting.txt existant :

echo "This line will be added to the end of the file." >> greeting.txt
cat greeting.txt

Sortie :

New content replaces old content completely.
This line will be added to the end of the file.

Comme vous pouvez le voir, le nouveau contenu est ajouté à la fin du fichier, en préservant le contenu existant.

Créons un nouveau fichier appelé log.txt et ajoutons-y plusieurs entrées, simulant ainsi un fichier journal (log file) :

echo "Log entry 1: System started" > log.txt
echo "Log entry 2: User logged in" >> log.txt
echo "Log entry 3: Application launched" >> log.txt

Vérifions maintenant le contenu de notre fichier journal :

cat log.txt

Sortie :

Log entry 1: System started
Log entry 2: User logged in
Log entry 3: Application launched

Vous pouvez également utiliser la redirection avec d'autres commandes, pas seulement echo. Par exemple, utilisons la commande ls pour lister les fichiers et enregistrer la sortie dans un fichier :

ls -l > file_list.txt
cat file_list.txt

La sortie affiche la liste détaillée des fichiers dans votre répertoire actuel, qui a été enregistrée dans file_list.txt.

N'oubliez pas :

  • > crée un nouveau fichier ou écrase un fichier existant
  • >> ajoute du contenu à la fin d'un fichier existant ou crée un nouveau fichier s'il n'existe pas

Redirection de la sortie d'erreur

Sous Linux, les commandes produisent deux types de sortie :

  1. Sortie standard (stdout) - la sortie normale d'une commande
  2. Erreur standard (stderr) - les messages d'erreur générés par une commande

Jusqu'à présent, nous avons redirigé la sortie standard. Apprenons maintenant à rediriger l'erreur standard.

L'erreur standard utilise le descripteur de fichier 2. Pour la rediriger, nous utilisons 2>. Essayons de lister un fichier qui n'existe pas, ce qui générera une erreur :

ls non_existent_file.txt

Vous verrez un message d'erreur :

ls: cannot access 'non_existent_file.txt': No such file or directory

Maintenant, redirigeons ce message d'erreur vers un fichier :

ls non_existent_file.txt 2> error.log

Cette fois, vous ne verrez aucun message d'erreur à l'écran car il a été redirigé vers le fichier error.log. Vérifions le contenu de ce fichier :

cat error.log

Sortie :

ls: cannot access 'non_existent_file.txt': No such file or directory

Vous pouvez également rediriger à la fois la sortie standard et l'erreur standard vers des fichiers différents :

## Create a file we can successfully list
echo "This is a test file" > existing_file.txt

## Redirect stdout to one file and stderr to another
ls existing_file.txt non_existent_file.txt > output.log 2> error2.log

## Check both files
echo "Content of output.log:"
cat output.log
echo "Content of error2.log:"
cat error2.log

Sortie :

Content of output.log:
existing_file.txt
Content of error2.log:
ls: cannot access 'non_existent_file.txt': No such file or directory

Vous pouvez même rediriger à la fois la sortie standard et l'erreur standard vers le même fichier en utilisant &> :

ls existing_file.txt non_existent_file.txt &> combined.log
cat combined.log

Cela capturera à la fois la sortie normale et tous les messages d'erreur dans le fichier combined.log.

Résumé

Dans ce laboratoire (lab), vous avez appris les concepts fondamentaux de la redirection d'E/S (I/O) sous Linux. Vous avez pratiqué :

  1. La redirection de sortie de base en utilisant l'opérateur > pour créer ou écraser des fichiers
  2. L'ajout de sortie à des fichiers existants en utilisant l'opérateur >>
  3. La redirection de l'erreur standard en utilisant l'opérateur 2>
  4. La redirection à la fois de la sortie standard et de l'erreur standard vers des fichiers différents ou le même fichier

Ces techniques de redirection sont des outils essentiels pour les opérations en ligne de commande sous Linux. Elles vous permettent de :

  • Sauvegarder la sortie des commandes pour un usage ultérieur
  • Créer des fichiers journaux (log files) pour le débogage
  • Supprimer les messages d'erreur si nécessaire
  • Combiner plusieurs sorties dans un seul fichier

En maîtrisant la redirection d'E/S, vous avez ajouté des compétences précieuses à votre boîte à outils Linux, ce qui vous aidera à travailler plus efficacement et plus productivité avec la ligne de commande.