Commandes logiques et redirection

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce laboratoire présente les outils essentiels de la ligne de commande Linux : les opérateurs logiques, la redirection et les pipelines. Ces fonctionnalités puissantes vous permettent de combiner des commandes, de contrôler le flux d'exécution des programmes et de manipuler les entrées/sorties. En maîtrisant ces concepts, vous améliorerez considérablement votre capacité à travailler efficacement dans les environnements Linux. Ce laboratoire est conçu pour les débutants et propose des explications détaillées ainsi qu'un guide étape par étape.

Réalisations

En terminant ce laboratoire, vous serez en mesure de :

  • Comprendre et utiliser les opérateurs logiques (&&, ||, ;)
  • Apprendre les techniques de redirection de fichiers (>, >>)
  • Créer des pipelines de commandes en utilisant l'opérateur |

Créer un répertoire de travail

Commençons par créer un répertoire pour nos expériences :

cd ~/project

mkdir logical_commands_lab
cd logical_commands_lab

Cela crée un nouveau répertoire appelé logical_commands_lab et vous y accède. Voici ce qui se passe :

  • mkdir signifie "make directory" (créer un répertoire). Il crée un nouveau dossier.
  • cd signifie "change directory" (changer de répertoire). Il vous déplace dans le dossier nouvellement créé.

Après avoir exécuté ces commandes, vous travaillerez à l'intérieur du nouveau répertoire logical_commands_lab. Cela permet de garder vos expériences organisées et séparées des autres fichiers.

Utilisation de l'opérateur logique ET (&&)

L'opérateur && est utilisé pour exécuter plusieurs commandes en séquence, mais seulement si la commande précédente réussit. Cela est utile pour enchaîner des commandes dépendantes. Essayons-le :

mkdir test_dir && echo "Directory created successfully"

Cette commande fait deux choses :

  1. Crée un répertoire nommé test_dir
  2. Si la création du répertoire réussit, elle affiche "Directory created successfully"

Si la première commande échoue (par exemple, si le répertoire existe déjà), la deuxième commande ne sera pas exécutée.

Maintenant, essayons de créer le même répertoire à nouveau :

mkdir test_dir && echo "Directory created successfully"

Cette fois, vous ne devriez pas voir le message de réussite. Pourquoi? Parce que mkdir échouera car le répertoire existe déjà, donc la commande echo après && ne sera pas exécutée.

Utilisation de l'opérateur logique OU (||)

L'opérateur || est utilisé pour exécuter la deuxième commande seulement si la première commande échoue. Cela est utile pour fournir des options de secours ou des messages d'erreur. Utilisons-le :

mkdir test_dir || echo "Failed to create directory"

Vous devriez voir le message d'erreur car test_dir existe déjà depuis l'étape précédente. La commande mkdir échoue, donc la commande echo après || est exécutée.

Maintenant, essayons avec un nouveau nom de répertoire :

mkdir new_dir || echo "Failed to create directory"

Cette fois, vous ne devriez pas voir le message d'erreur car la création du répertoire devrait réussir. Lorsque la première commande réussit, la commande après || est ignorée.

Utilisation du séparateur de commandes (;)

L'opérateur ; vous permet d'exécuter plusieurs commandes en séquence, que la commande précédente ait réussi ou échoué. Cela est utile lorsque vous souhaitez exécuter une série de commandes non liées. Essayons-le :

echo "First command" ; echo "Second command" ; echo "Third command"

Vous devriez voir les trois messages s'afficher l'un après l'autre. Le ; garantit que toutes les commandes sont exécutées dans l'ordre, qu'elles réussissent ou échouent.

Maintenant, essayons un exemple plus pratique :

date ; ls -l ; pwd

Cette séquence de commandes va :

  1. Afficher la date et l'heure actuelles
  2. Lister le contenu du répertoire courant au format détaillé
  3. Afficher le répertoire de travail actuel

Chaque commande sera exécutée dans l'ordre, séparée par l'opérateur ;. Même si une commande devait échouer, les commandes suivantes seraient toujours exécutées.

Essayons un autre exemple qui inclut une erreur intentionnelle :

echo "Starting commands" ; ls /nonexistent_directory ; echo "Commands finished"

Dans ce cas, vous devriez voir :

  1. L'affichage de "Starting commands"
  2. Un message d'erreur concernant le répertoire inexistant
  3. L'affichage de "Commands finished"

Cela démontre que même lorsque la commande du milieu échoue (parce que le répertoire n'existe pas), les commandes qui la précèdent et qui la suivent sont toujours exécutées.

Redirection de sortie de base (>)

L'opérateur > redirige la sortie d'une commande vers un fichier, écrasant tout contenu existant. Cela est utile pour enregistrer la sortie d'une commande ou créer de nouveaux fichiers avec un contenu spécifique. Essayons-le :

echo "Hello, World" > greeting.txt
cat greeting.txt

La première commande crée un fichier nommé greeting.txt avec le contenu "Hello, World". La commande cat affiche ensuite le contenu du fichier.

Maintenant, écrasons le contenu :

echo "Goodbye, World" > greeting.txt
cat greeting.txt

Vous devriez maintenant voir "Goodbye, World" à la place. L'opérateur > a écrasé le contenu précédent du fichier.

Ajout de sortie (>>)

L'opérateur >> ajoute la sortie à un fichier au lieu de l'écraser. Cela est utile lorsque vous souhaitez ajouter du nouveau contenu à un fichier existant sans perdre son contenu actuel. Essayons-le :

echo "First line" > multiline.txt
echo "Second line" >> multiline.txt
echo "Third line" >> multiline.txt
cat multiline.txt

La première commande crée un nouveau fichier (ou écrase un fichier existant) avec le texte "First line". Les deux commandes suivantes ajoutent des lignes supplémentaires au fichier. La commande cat affiche ensuite le contenu du fichier, qui devrait afficher les trois lignes.

Pipeline de base (|)

L'opérateur |, connu sous le nom de pipe (tuyau), prend la sortie de la commande de gauche et l'utilise comme entrée pour la commande de droite. Cela vous permet de chaîner des commandes entre elles, créant des combinaisons puissantes. Essayons un exemple simple :

echo "apple banana cherry date elderberry" | tr ' ' '\n' | sort

Cette commande effectue trois opérations :

  1. echo affiche une chaîne de noms de fruits
  2. tr ' ' '\n' remplace les espaces par des sauts de ligne, mettant chaque fruit sur une ligne distincte
  3. sort classe les fruits par ordre alphabétique

La sortie devrait être une liste triée de fruits, chacun sur sa propre ligne.

Combinaison de plusieurs techniques

Maintenant, combinons plusieurs techniques que nous avons apprises. Nous allons créer un fichier, rechercher un mot spécifique et rediriger la sortie :

echo "The quick brown fox jumps over the lazy dog" > sentence.txt
cat sentence.txt | grep "fox" > fox_result.txt && echo "Search completed successfully" || echo "Search failed"
cat fox_result.txt

Cette séquence de commandes :

  1. Crée un fichier sentence.txt contenant un pangramme bien connu
  2. Recherche le mot "fox" dans le fichier à l'aide de grep
  3. Redirige le résultat de la recherche vers le fichier fox_result.txt
  4. Affiche un message de succès si la recherche et la redirection ont fonctionné, ou un message d'échec si quelque chose a mal tourné
  5. Affiche le contenu du fichier fox_result.txt

Cela démontre comment vous pouvez combiner la création de fichiers, la recherche, la redirection et l'exécution conditionnelle dans une seule séquence de commandes.

Résumé

Dans ce laboratoire, vous avez appris à utiliser les opérateurs logiques (&&, ||, ;), à rediriger la sortie (>, >>) et à créer des pipelines (|) sous Linux. Ces outils puissants vous permettent de créer des séquences de commandes complexes, de contrôler le flux d'un programme en fonction de son succès ou de son échec, et de manipuler efficacement les entrées/sorties.

Vous avez pratiqué :

  • La création de répertoires et de fichiers
  • L'utilisation de && pour exécuter des commandes de manière conditionnelle
  • L'utilisation de || pour fournir des actions alternatives
  • L'utilisation de ; pour exécuter plusieurs commandes en séquence
  • La redirection de la sortie vers des fichiers avec > et >>
  • La création de pipelines avec | pour chaîner des commandes

Avec de la pratique, vous pourrez combiner ces techniques pour effectuer des opérations sophistiquées sur la ligne de commande, améliorant ainsi votre productivité et vos compétences en tant qu'utilisateur Linux. N'oubliez pas que la clé pour maîtriser ces concepts est d'expérimenter et de les utiliser dans vos tâches quotidiennes. N'hésitez pas à revenir sur ce laboratoire ou à consulter les pages de manuel (commande man) pour plus d'informations sur ces commandes Linux et d'autres encore.