Créer des scripts Shell pour traiter la sortie des commandes

Red Hat Enterprise LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce défi, vous allez apprendre à concevoir un script shell simple qui traite les données générées par des commandes système. Il s'agit d'une compétence fondamentale pour automatiser des tâches et extraire des informations spécifiques à partir d'outils en ligne de commande. Vous découvrirez comment capturer le flux de sortie d'une commande, manipuler ces données et utiliser les informations traitées au sein de votre script. Ce défi vous aidera à développer des compétences pratiques en scripting, essentielles pour l'administration système.

Créer un script Shell pour traiter la sortie d'une commande

Au cours de cette étape, vous allez créer un script shell qui capture le résultat de la commande ls -l, en extrait des informations spécifiques (taille et nom du fichier) et les affiche de manière structurée. Cet exercice démontre comment analyser le flux de sortie d'une commande, une tâche courante dans l'automatisation par script.

Tâches

  • Créer un script shell qui capture la sortie de la commande ls -l.
  • Extraire la taille et le nom de chaque fichier à partir du résultat de ls -l.
  • Afficher les informations extraites selon un format de sortie spécifique.

Exigences

  • Créez le script dans le répertoire ~/project/scripts.

  • Nommez le script process_ls.sh.

  • Le script doit impérativement commencer par le shebang #!/bin/bash.

  • Le script doit capturer la sortie de la commande ls -l et la stocker dans une variable.

  • Pour chaque fichier listé dans la sortie de ls -l, extrayez sa taille et son nom.

  • Affichez la taille et le nom du fichier selon le format suivant :

    File size: <file_size> bytes
    File name: <file_name>

    Remplacez <file_size> par la taille réelle du fichier en octets et <file_name> par le nom réel du fichier.

Exemple

Supposons que vous ayez un répertoire contenant des fichiers. Lorsque vous exécutez votre script, le résultat devrait ressembler à ceci :

[labex@host ~]$ cd ~/project/scripts
[labex@host scripts]$ nano process_ls.sh
[labex@host scripts]$ chmod +x process_ls.sh
[labex@host scripts]$ ./process_ls.sh
File size: 1300 bytes
File name: process_ls.sh
[labex@host scripts]$

Les tailles et noms de fichiers exacts dépendront du contenu de votre répertoire actuel.

Astuces

  • Vous pouvez utiliser la substitution de commande (par exemple, variable=$(command)) pour capturer le résultat d'une commande.
  • Pour traiter chaque ligne de la sortie, vous pouvez utiliser une boucle while read.
  • La commande ls -l fournit des informations détaillées. Vous devrez peut-être utiliser des outils comme awk ou cut pour extraire des colonnes (champs) spécifiques de chaque ligne.
  • N'oubliez pas que la première ligne de la sortie de ls -l commence souvent par "total" et doit être ignorée lors du traitement des fichiers individuels.
  • Assurez-vous que votre script possède les permissions d'exécution (chmod +x).
✨ Vérifier la solution et pratiquer

Résumé

Dans ce défi, vous avez appris à créer un script shell pour traiter le flux de sortie d'une commande. Plus précisément, vous avez capturé le résultat de ls -l, extrait les tailles et les noms de fichiers, puis les avez affichés de manière formatée. Cet exercice a permis de mettre en pratique des concepts clés du scripting shell tels que la substitution de commande, les boucles while read et le traitement de texte avec awk. Ces compétences sont cruciales pour automatiser des tâches, analyser des fichiers journaux (logs) et extraire des données spécifiques à partir de divers outils en ligne de commande, des exigences courantes pour l'examen RHCSA et l'administration système au quotidien.