Linux Professional Institute Learning Logo.
Passer au contenu principal
  • Accueil
    • Toutes les ressources
    • Supports de Cours LPI
    • Devenez contributeur
    • Publishing Partners
    • Devenez Partenaire de Publication
    • À propos
    • FAQ
    • Contributeurs
    • Feuille de route
    • Contactez-nous
  • LPI.org
3.2 Leçon 1
Sujet 1 : Communauté Linux et carrière dans le logiciel libre
1.1 Évolution de Linux et systèmes d'exploitation populaires
  • 1.1 Leçon 1
1.2 Applications libres majeures
  • 1.2 Leçon 1
1.3 Logiciel à code source ouvert et licences
  • 1.3 Leçon 1
1.4 Compétences informatiques et travail sous Linux
  • 1.4 Leçon 1
Sujet 2 : Trouver son chemin sur un système Linux
2.1 Bases sur la ligne de commande
  • 2.1 Leçon 1
  • 2.1 Leçon 2
2.2 Utilisation de la ligne de commande pour obtenir de l'aide
  • 2.2 Leçon 1
2.3 Utilisation des répertoires et liste des fichiers
  • 2.3 Leçon 1
  • 2.3 Leçon 2
2.4 Création, déplacement et suppression de fichiers
  • 2.4 Leçon 1
Sujet 3 : Le pouvoir de la ligne de commande
3.1 Archivage de fichiers en ligne de commande
  • 3.1 Leçon 1
3.2 Recherche et extraction de données à partir de fichiers
  • 3.2 Leçon 1
  • 3.2 Leçon 2
3.3 Conversion de commandes en script
  • 3.3 Leçon 1
  • 3.3 Leçon 2
Sujet 4 : Le système d'exploitation Linux
4.1 Choix d'un système d'exploitation
  • 4.1 Leçon 1
4.2 Compréhension du matériel informatique
  • 4.2 Leçon 1
4.3 Localisation des données
  • 4.3 Leçon 1
  • 4.3 Leçon 2
4.4 Intégration au réseau
  • 4.4 Leçon 1
Sujet 5 : Sécurité et droits d'accès aux fichiers
5.1 Sécurité élémentaire et identification des catégories d'utilisateurs
  • 5.1 Leçon 1
5.2 Création des utilisateurs et des groupes
  • 5.2 Leçon 1
5.3 Gestion des propriétés et des droits d'accès aux fichiers
  • 5.3 Leçon 1
5.4 Répertoires et fichiers spéciaux
  • 5.4 Leçon 1
How to get certified
  1. Sujet 3 : Le pouvoir de la ligne de commande
  2. 3.2 Recherche et extraction de données à partir de fichiers
  3. 3.2 Leçon 1

3.2 Leçon 1

Certification :

Linux Essentials

Version :

1.6

Thème :

3 La Puissance de la Ligne de Commande

Objectif :

3.2 Recherche et Extraction de Données dans des Fichiers

Leçon :

1 sur 2

Introduction

Dans cet atelier, nous nous concentrerons sur la redirection ou la transmission d’informations d’une source à une autre à l’aide d’outils spécifiques. La ligne de commande Linux redirige les informations par des canaux standard spécifiques. L’entrée standard (stdin ou canal 0) de la commande est considérée comme étant le clavier et la sortie standard (stdout ou canal 1) est considérée comme étant l’écran. Il existe également un autre canal qui est censé rediriger la sortie d’erreur (stderr ou canal 2) d’une commande ou les messages d’erreur d’un programme. L’entrée et/ou la sortie peuvent être redirigées.

Lors de l’exécution d’une commande, nous souhaitons parfois transmettre certaines informations à la commande ou rediriger la sortie vers un fichier spécifique. Chacune de ces fonctionnalités sera abordée dans les deux sections suivantes.

Redirection des E/S

La redirection E/S (Entrée/Sortie) permet à l’utilisateur de rediriger des informations depuis ou vers une commande en utilisant un fichier texte. Comme décrit précédemment, l’entrée, la sortie et la sortie d’erreur standard peuvent être redirigées, et les informations peuvent être extraites de fichiers texte.

Redirection de la Sortie Standard

Pour rediriger la sortie standard vers un fichier, au lieu de l’écran, nous devons utiliser l’opérateur > suivi du nom du fichier. Si le fichier n’existe pas, un nouveau fichier sera créé, sinon, les informations écraseront le fichier existant.

Afin de voir le contenu du fichier que nous venons de créer, nous pouvons utiliser la commande cat. Par défaut, cette commande affiche le contenu d’un fichier à l’écran. Consultez la page du manuel pour en savoir plus sur ses fonctionnalités.

L’exemple ci-dessous démontre la fonctionnalité de l’opérateur. Dans un premier temps, un nouveau fichier est créé contenant le texte “Hello World!”

$ echo "Hello World!" > text
$ cat text
Hello World!

Dans la seconde invocation, le même fichier est écrasé par le nouveau texte :

$ echo "Hello!" > text
$ cat text
Hello!

Si nous voulons ajouter de nouvelles informations à la fin du fichier, nous utiliserons l’opérateur >>. Cet opérateur crée également un nouveau fichier s’il ne trouve pas un fichier existant.

Le premier exemple montre l’ajout du texte. Comme on peut le voir, le nouveau texte a été ajouté sur la ligne suivante :

$ echo "Hello to you too!" >> text
$ cat text
Hello!
Hello to you too!

Le deuxième exemple montre qu’un nouveau fichier sera créé :

$ echo "Hello to you too!" >> text2
$ cat text2
Hello to you too!

Redirection de la Sortie d’Erreur Standard

Afin de rediriger uniquement les messages d’erreur, l’utilisateur devra utiliser l’opérateur 2> suivi du nom du fichier dans lequel les erreurs seront écrites. Si le fichier n’existe pas, un nouveau fichier sera créé, sinon le fichier sera écrasé.

Comme expliqué, le canal pour rediriger l’erreur standard est le canal 2. Lors de la redirection de l’erreur standard, le canal doit être spécifié, contrairement à l’autre sortie standard où le canal 1 est défini par défaut. Par exemple, la commande suivante recherche un fichier ou un répertoire nommé games et n’écrit que l’erreur dans le fichier text-error, tout en affichant la sortie standard à l’écran :

$ find /usr games 2> text-error
/usr
/usr/share
/usr/share/misc
---------Sortie Omise----------
/usr/lib/libmagic.so.1.0.0
/usr/lib/libdns.so.81
/usr/games
$ cat text-error
find: `games': No such file or directory
Note

Pour plus d’informations sur la commande find, consultez sa page man.

Par exemple, la commande suivante s’exécutera sans erreur, donc aucune information ne sera écrite dans le fichier text-error :

$ sort /etc/passwd 2> text-error
$ cat text-error

De même que la sortie standard, l’erreur standard peut également être ajoutée à un fichier avec l’opérateur 2>>. La nouvelle erreur sera ainsi ajoutée à la fin du fichier. Si le fichier n’existe pas, un nouveau fichier sera créé. Le premier exemple montre l’ajout de la nouvelle information dans le fichier, tandis que le second exemple montre que la commande crée un nouveau fichier lorsqu’un fichier existant ne peut être trouvé avec le même nom :

$ sort /etc 2>> text-error
$ cat text-error
sort: read failed: /etc: Is a directory
$ sort /etc/shadow 2>> text-error2
$ cat text-error2
sort: open failed: /etc/shadow: Permission denied

En utilisant ce type de redirection, seuls les messages d’erreur seront redirigés vers le fichier, la sortie normale sera écrite à l’écran ou passera par la sortie standard ou stdout.

Il existe un fichier particulier qui, techniquement, est un "bit bucket" (un fichier qui accepte des données et n’en fait rien) : /dev/null. Vous pouvez rediriger toute information non pertinente que vous ne souhaitez pas voir affichée ou redirigée vers un fichier important, comme le montre l’exemple ci-dessous :

$ sort /etc 2> /dev/null

Redirection de l’Entrée Standard

Ce type de redirection est utilisé pour entrer des données dans une commande, à partir d’un fichier spécifié au lieu d’un clavier. Dans ce cas, l’opérateur < est utilisé comme indiqué dans l’exemple :

$ cat < text
Hello!
Hello to you too!

La redirection de l’entrée standard est généralement utilisée avec les commandes qui n’acceptent pas les arguments de fichier. La commande tr est l’une d’entre elles. Cette commande peut être utilisée pour traduire le contenu d’un fichier en modifiant les caractères d’un fichier de manière spécifique, comme en supprimant un caractère particulier d’un fichier, l’exemple ci-dessous montre la suppression du caractère l :

$ tr -d "l" < text
Heo!
Heo to you too!

Pour plus d’informations, consultez la page man de tr.

Here Documents (Ici documents)

Contrairement aux redirections de sortie, l’opérateur << agit de manière différente par rapport aux autres opérateurs. Ce flux d’entrée est également appelé here document. here document représente le bloc de code ou de texte qui peut être redirigé vers la commande ou le programme interactif. Différents types de langages de script, comme bash, sh et csh, sont capables de prendre des données directement à partir de la ligne de commande, sans utiliser de fichiers texte.

Comme on peut le voir dans l’exemple ci-dessous, l’opérateur est utilisé pour entrer des données dans la commande, tandis que le mot après ne précise pas le nom du fichier. Le mot est interprété comme le délimiteur de l’entrée et il ne sera pas pris en considération comme contenu, donc cat ne l’affichera pas :

$ cat << hello
> hey
> ola
> hello
hey
ola

Consultez la page de manuel de la commande cat pour plus d’informations.

Les Combinaisons

La première combinaison que nous allons explorer combine la redirection de la sortie standard et de la sortie d’erreur standard vers le même fichier. Les opérateurs &> et &>> sont utilisés, & représentant la combinaison du canal 1 et du canal 2. Le premier opérateur écrasera le contenu existant du fichier et le second ajoutera les nouvelles informations à la fin du fichier. Les deux opérateurs permettront la création du nouveau fichier s’il n’existe pas, tout comme dans les sections précédentes :

$ find /usr admin &> newfile
$ cat newfile
/usr
/usr/share
/usr/share/misc
---------Sortie omise----------
/usr/lib/libmagic.so.1.0.0
/usr/lib/libdns.so.81
/usr/games
find: `admin': No such file or directory
$ find /etc/calendar &>> newfile
$ cat newfile
/usr
/usr/share
/usr/share/misc
---------Sortie omise----------
/usr/lib/libmagic.so.1.0.0
/usr/lib/libdns.so.81
/usr/games
find: `admin': No such file or directory
/etc/calendar
/etc/calendar/default

Examinons un exemple utilisant la commande cut :

$ cut -f 3 -d "/" newfile
$ cat newfile

share
share
share
---------Sortie omise----------
lib
games
find: `admin': No such file or directory
calendar
calendar
find: `admin': No such file or directory

La commande cut coupe des champs spécifiés du fichier d’entrée en utilisant l’option -f, le 3ème champ dans notre cas. Pour que la commande puisse trouver le champ, un délimiteur doit également être spécifié avec l’option -d. Dans notre cas, le délimiteur sera le caractère /.

Pour en savoir plus sur la commande de cut, consultez sa page man.

Les Pipes de la Ligne de Commande

La redirection est principalement utilisée pour stocker le résultat d’une commande, pour être traité par une commande différente. Ce type de processus intermédiaire peut devenir très fastidieux et compliqué si vous voulez que les données passent par plusieurs processus. Pour éviter cela, vous pouvez relier la commande directement par des pipes (tuyaux). En d’autres termes, la sortie de la première commande devient automatiquement l’entrée de la deuxième commande. Cette connexion se fait à l’aide de l’opérateur | (barre verticale) :

$ cat /etc/passwd | less
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
:

Dans l’exemple ci-dessus, la commande less après l’opérateur de pipe modifie la façon dont le fichier est affiché. La commande less affiche le fichier texte, ce qui permet à l’utilisateur de faire défiler une ligne à la fois. less est également utilisé par défaut pour afficher les pages de manuel, comme nous l’avons vu dans les leçons précédentes.

Il est possible d’utiliser plusieurs pipes en même temps. Les commandes intermédiaires qui reçoivent l’entrée puis la modifient et produisent la sortie sont appelées filtres. Prenons la commande ls -l et essayons de compter le nombre de mots des 10 premières lignes de la sortie. Pour ce faire, nous devrons utiliser la commande head qui, par défaut, affiche les 10 premières lignes d’un fichier, puis compter les mots à l’aide de la commande wc :

$ ls -l | head | wc -w
10

Comme mentionné précédemment, par défaut, head n’affiche que les 10 premières lignes du fichier texte spécifié. Ce comportement peut être modifié en utilisant des options spécifiques. Consultez la page de manuel de la commande pour en savoir plus.

Il existe une autre commande qui affiche la fin d’un fichier : tail. Par défaut, cette commande sélectionne les 10 dernières lignes et les affiche, comme head, ce nombre peut également être modifié. Consultez la page de manuel de tail pour plus de détails.

Note

L’option -f peut afficher les dernières lignes d’un fichier pendant qu’il est mis à jour. Cette fonction peut s’avérer très utile pour surveiller des fichiers comme syslog pour une activité en cours.

La commande wc (word count) compte par défaut les lignes, les mots et les octets d’un fichier. Comme le montre l’exercice, l’option -w fait en sorte que la commande ne compte que les mots contenus dans les lignes sélectionnées. Les options les plus courantes que vous pouvez utiliser avec cette commande sont les suivantes : -l, qui indique à la commande de ne compter que les lignes, et -c, qui est utilisé pour ne compter que les octets. D’autres variantes et options de la commande, ainsi que de plus amples informations sur wc peuvent être trouvées dans la page de man de la commande.

Exercices Guidés

  1. Listez le contenu de votre répertoire courant, y compris la propriété et les autorisations, et redirigez la sortie vers un fichier nommé contents.txt dans votre répertoire personnel.

  2. Triez le contenu du fichier contents.txt de votre répertoire courant et ajoutez-le à la fin d’un nouveau fichier nommé contents-sorted.txt.

  3. Affichez les 10 dernières lignes du fichier /etc/passwd et redirigez-les vers un nouveau fichier dans le répertoire Documents de votre utilisateur.

  4. Comptez le nombre de mots dans le fichier contents.txt et ajoutez la sortie à la fin d’un fichier field2.txt dans votre répertoire personnel. Vous devrez utiliser la redirection en entrée et en sortie.

  5. Affichez les 5 premières lignes du fichier /etc/passwd et triez la sortie par ordre alphabétique inverse.

  6. En utilisant le fichier contents.txt créé précédemment, comptez le nombre de caractères des 9 dernières lignes.

  7. Comptez le nombre de fichiers appelés test dans le répertoire /usr/share et ses sous-répertoires. Note : chaque ligne de sortie de la commande find représente un fichier.

Exercices d’Exploration

  1. Sélectionnez le deuxième champ du fichier contents.txt et redirigez la sortie standard et la sortie d’erreur vers un autre fichier appelé field1.txt.

  2. En utilisant l’opérateur de redirection d’entrée et la commande tr, supprimez les tirets (-) du fichier contents.txt.

  3. Quel est le plus grand avantage de ne rediriger que les erreurs vers un fichier ?

  4. Remplacez tous les espaces récurrents dans le fichier contents.txt, trié alphabétiquement, par un seul espace.

  5. Dans une ligne de commande, éliminez les espaces récurrents (comme vous l’avez fait dans l’exercice précédent), sélectionnez le neuvième champ et triez-le par ordre alphabétique inverse et sans tenir compte de la casse. Combien de pipes avez-vous dû utiliser ?

Résumé

Dans cet atelier, vous avez appris :

  • Les types de redirection

  • Comment utiliser les opérateurs de redirection

  • Comment utiliser les pipes pour filtrer les sorties des commandes

Commandes utilisées dans cette leçon :

cut

Supprime des sections de chaque ligne d’un fichier.

cat

Affiche ou concatène des fichiers.

find

Recherche de fichiers dans une hiérarchie de répertoires.

less

Affiche un fichier, ce qui permet à l’utilisateur de faire défiler une ligne à la fois.

more

Affiche un fichier, une page à la fois.

head

Affiche les 10 premières lignes d’un fichier.

tail

Affiche les 10 dernières lignes d’un fichier.

sort

Trie les fichiers.

wc

Compte par défaut les lignes, les mots ou les octets d’un fichier.

Réponses aux Exercices Guidés

  1. Listez le contenu de votre répertoire courant, y compris la propriété et les autorisations, et redirigez la sortie vers un fichier appelé contents.txt dans votre répertoire personnel.

    $ ls -l > contents.txt
  2. Triez le contenu du fichier contents.txt de votre répertoire courant et ajoutez-le à la fin d’un nouveau fichier nommé contents-sorted.txt.

    $ sort contents.txt >> contents-sorted.txt
  3. Affichez les 10 dernières lignes du fichier /etc/passwd et redirigez-les vers un nouveau fichier dans le répertoire Documents de votre utilisateur.

    $ tail /etc/passwd > Documents/newfile
  4. Comptez le nombre de mots dans le fichier contents.txt et ajoutez la sortie à la fin d’un fichier field2.txt dans votre répertoire personnel. Vous devrez utiliser la redirection en entrée et en sortie.

    $ wc < contents.txt >> field2.txt
  5. Affichez les 5 premières lignes du fichier /etc/passwd et triez la sortie par ordre alphabétique inverse.

    $ head -n 5 /etc/passwd | sort -r
  6. En utilisant le fichier contents.txt créé précédemment, comptez le nombre de caractères des 9 dernières lignes.

    $ tail -n 9 contents.txt | wc -c
    531
  7. Comptez le nombre de fichiers appelés test dans le répertoire /usr/share et ses sous-répertoires. Note : chaque ligne de sortie de la commande find représente un fichier.

    $ find /usr/share -name test | wc -l
    125

Réponses aux Exercices d’Exploration

  1. Sélectionnez le deuxième champ du fichier contents.txt et redirigez la sortie standard et la sortie d’erreur vers un autre fichier appelé field1.txt.

    $ cut -f 2 -d " " contents.txt &> field1.txt
  2. En utilisant l’opérande de redirection d’entrée et la commande tr, supprimez les tirets (-) du fichier contents.txt.

    $ tr -d "-" < contents.txt
  3. Quel est le plus grand avantage de ne rediriger que les erreurs vers un fichier ?

    Seul le fait de rediriger les erreurs vers un fichier peut aider à conserver un fichier journal qui est fréquemment surveillé.

  4. Remplacez tous les espaces récurrents dans le fichier contents.txt, trié alphabétiquement, par un seul espace.

    $ sort contents.txt | tr -s " "
  5. Dans une ligne de commande, éliminez les espaces récurrents (comme vous l’avez fait dans l’exercice précédent), sélectionnez le neuvième champ et triez-le par ordre alphabétique inverse et sans tenir compte de la casse. Combien de pipes avez-vous dû utiliser ?

    $ cat contents.txt | tr -s " " | cut -f 9 -d " " | sort -fr

    L’exercice utilise 3 pipes, un pour chaque filtre.

Linux Professional Insitute Inc. Tous droits réservés. Visitez le site web du projet _Learning_ : https://learning.lpi.org
Ce travail est sous licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.

Prochaine leçon

3.2 Recherche et extraction de données à partir de fichiers (3.2 Leçon 2)

Lire la prochaine leçon

Linux Professional Insitute Inc. Tous droits réservés. Visitez le site web du projet _Learning_ : https://learning.lpi.org
Ce travail est sous licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.

LPI est une organisation à but non lucratif.

© 2023 Le Linux Professional Institute (LPI) est la référence mondiale en matière de certification et un organisme de soutien aux professionnels de l'Open Source. Avec plus de 200 000 certifiés à son actif, c'est le principal organisme de certification indépendant pour Linux et l'Open Source au monde. Le LPI a certifié des professionnels dans plus de 180 pays, organise des examens en plusieurs langues et compte des centaines de partenaires pour la formation.

Notre objectif est la création d'opportunités économiques et créatives pour tous en rendant accessible au monde entier la certification des connaissances et des compétences en matière d'Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contactez-nous
  • Politique en matière de confidentialité et de cookies

Vous avez repéré une erreur ou vous voulez aider à améliorer cette page ? Faites-nous savoir.

© 1999–2023 The Linux Professional Institute Inc. Tous droits réservés.