Opérations sur le système de fichiers dans le shell

ShellShellBeginner
Pratiquer maintenant

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

Introduction

Dans ce laboratoire (lab), vous apprendrez à effectuer divers tests de fichiers dans le shell. Les tests de fichiers sont des outils essentiels pour vérifier les propriétés des fichiers et des répertoires dans le système de fichiers. À la fin de ce laboratoire, vous serez familiarisé avec les commandes de test de fichiers courantes et leur utilisation, qui sont des compétences fondamentales pour travailler avec les fichiers dans les environnements Linux.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 98.92%. Il a reçu un taux d'avis positifs de 100% de la part des apprenants.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) shell(("Shell")) -.-> shell/ControlFlowGroup(["Control Flow"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) shell(("Shell")) -.-> shell/VariableHandlingGroup(["Variable Handling"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") shell/VariableHandlingGroup -.-> shell/variables_decl("Variable Declaration") shell/VariableHandlingGroup -.-> shell/variables_usage("Variable Usage") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") shell/ControlFlowGroup -.-> shell/if_else("If-Else Statements") shell/ControlFlowGroup -.-> shell/cond_expr("Conditional Expressions") subgraph Lab Skills linux/echo -.-> lab-388821{{"Opérations sur le système de fichiers dans le shell"}} shell/variables_decl -.-> lab-388821{{"Opérations sur le système de fichiers dans le shell"}} shell/variables_usage -.-> lab-388821{{"Opérations sur le système de fichiers dans le shell"}} linux/touch -.-> lab-388821{{"Opérations sur le système de fichiers dans le shell"}} linux/chmod -.-> lab-388821{{"Opérations sur le système de fichiers dans le shell"}} linux/mkdir -.-> lab-388821{{"Opérations sur le système de fichiers dans le shell"}} shell/if_else -.-> lab-388821{{"Opérations sur le système de fichiers dans le shell"}} shell/cond_expr -.-> lab-388821{{"Opérations sur le système de fichiers dans le shell"}} end

Création d'un fichier de test

Avant de commencer les opérations sur les fichiers, il est important de comprendre notre environnement de travail. Sous Linux, vous travaillez toujours dans un répertoire spécifique, et il est crucial de savoir où vous vous trouvez dans le système de fichiers.

  1. Ouvrez un terminal dans le WebIDE. C'est là que vous taperez vos commandes.

  2. Créez un nouveau fichier nommé test_file.txt :

    touch test_file.txt

    La commande touch est utilisée pour créer un fichier vide. Si le fichier existe déjà, elle met à jour l'horodatage du fichier sans modifier son contenu.

  3. Ajoutez du contenu au fichier :

    echo "This is a test file for our lab." > test_file.txt

    Cette commande utilise echo pour afficher le texte et > pour rediriger cette sortie dans le fichier. Soyez prudent avec >, car il écrasera tout contenu existant dans le fichier.

  4. Vérifiez le contenu du fichier :

    cat test_file.txt

    cat est l'abréviation de "concatenate" (concaténer), mais il est souvent utilisé pour afficher le contenu d'un fichier. Vous devriez voir le message "This is a test file for our lab."

Si vous faites une erreur ou que vous souhaitez recommencer, vous pouvez toujours supprimer le fichier avec rm test_file.txt et recommencer à partir de l'étape 1.

Vérification de l'existence d'un fichier

Maintenant que nous avons créé un fichier, apprenons à vérifier si un fichier existe. C'est une tâche courante dans les scripts shell, surtout lorsque vous devez effectuer des opérations sur des fichiers.

  1. Créez un nouveau fichier de script nommé file_exists.sh :

    touch file_exists.sh
  2. Ajoutez le contenu suivant au fichier :

    #!/bin/bash
    
    filename="test_file.txt"
    if [ -e "$filename" ]; then
      echo "$filename exists"
    else
      echo "$filename does not exist"
    fi

    Décortiquons cela :

    • #!/bin/bash est appelé un shebang. Il indique au système qu'il s'agit d'un script bash.
    • Nous définissons une variable filename sur "test_file.txt".
    • La déclaration if vérifie si le fichier existe. -e est un test qui retourne vrai si le fichier existe.
    • Nous utilisons echo pour afficher un message en fonction de l'existence ou non du fichier.
  3. Enregistrez le fichier et quittez l'éditeur.

  4. Rendez le script exécutable :

    chmod +x file_exists.sh
  5. Exécutez le script :

    ./file_exists.sh

    Vous devriez voir la sortie : "test_file.txt exists"

  6. Maintenant, testons avec un fichier qui n'existe pas. Tout d'abord, nous allons renommer notre fichier de test :

    mv test_file.txt non_existent.txt

    Cette commande renomme test_file.txt en non_existent.txt.

  7. Modifiez le script pour vérifier le nom de fichier original "test_file.txt" :

    nano file_exists.sh

    Changez la variable filename en "test_file.txt" si elle n'est pas déjà définie sur cette valeur.

  8. Exécutez le script à nouveau :

    ./file_exists.sh

    Vous devriez voir la sortie : "test_file.txt does not exist"

Ce script montre comment vérifier l'existence d'un fichier, ce qui est crucial lorsque votre script doit travailler avec des fichiers qui peuvent ou non être présents.

Vérification de l'existence d'un répertoire

De la même manière que pour vérifier l'existence d'un fichier, nous pouvons également vérifier si un répertoire existe. Cela est utile lorsque votre script doit travailler avec des répertoires qui peuvent ou non être présents.

  1. Créez un nouveau fichier de script nommé dir_exists.sh :

    touch dir_exists.sh
  2. Ajoutez le contenu suivant au fichier :

    #!/bin/bash
    
    dirname="test_directory"
    if [ -d "$dirname" ]; then
      echo "$dirname exists"
    else
      echo "$dirname does not exist"
    fi

    Ce script est très similaire à notre script de vérification d'existence de fichier, mais il utilise -d au lieu de -e. Le test -d vérifie spécifiquement l'existence d'un répertoire.

  3. Enregistrez le fichier et quittez l'éditeur.

  4. Rendez le script exécutable :

    chmod +x dir_exists.sh
  5. Exécutez le script :

    ./dir_exists.sh

    Vous devriez voir la sortie : "test_directory does not exist"

  6. Maintenant, créons le répertoire et exécutons le script à nouveau :

    mkdir test_directory
    ./dir_exists.sh

    Vous devriez maintenant voir la sortie : "test_directory exists"

    mkdir est la commande pour créer un nouveau répertoire.

Ce script montre comment vérifier l'existence d'un répertoire. Cela peut être particulièrement utile dans les scripts qui doivent créer, modifier ou supprimer des répertoires.

Vérification des permissions de fichier

Sous Linux, chaque fichier et répertoire a des permissions associées qui déterminent qui peut lire, écrire ou exécuter ces éléments. Dans cette étape, nous allons apprendre à vérifier les permissions de fichier, plus précisément si un fichier est lisible.

  1. Tout d'abord, renommons notre fichier avec son nom d'origine :

    mv non_existent.txt test_file.txt
  2. Créez un nouveau fichier de script nommé file_readable.sh :

    touch file_readable.sh
  3. Ajoutez le contenu suivant au fichier :

    #!/bin/bash
    
    filename="test_file.txt"
    if [ -r "$filename" ]; then
      echo "You have read permission for $filename"
    else
      echo "You do not have read permission for $filename"
    fi

    Ce script utilise le test -r, qui vérifie si le fichier est lisible par l'utilisateur actuel.

  4. Enregistrez le fichier et quittez l'éditeur.

  5. Rendez le script exécutable :

    chmod +x file_readable.sh
  6. Exécutez le script :

    ./file_readable.sh

    Vous devriez voir la sortie : "You have read permission for test_file.txt"

  7. Maintenant, supprimons la permission de lecture et exécutons le script à nouveau :

    chmod -r test_file.txt
    ./file_readable.sh

    Vous devriez maintenant voir la sortie : "You do not have read permission for test_file.txt"

    chmod -r supprime les permissions de lecture du fichier.

  8. Restaurez la permission de lecture :

    chmod +r test_file.txt

    Il est important de restaurer les permissions pour ne pas laisser accidentellement notre fichier illisible.

Ce script montre comment vérifier les permissions de fichier. Comprendre et gérer les permissions de fichier est crucial pour la sécurité du système et le bon fonctionnement des scripts.

Résumé

Dans ce laboratoire, vous avez appris à effectuer des opérations essentielles sur le système de fichiers dans le shell. Vous avez créé des scripts pour vérifier l'existence de fichiers et de répertoires, ainsi que les permissions des fichiers. Ces compétences sont fondamentales pour travailler avec des fichiers et des répertoires dans des environnements Linux et constituent la base pour des tâches de scripting shell plus complexes.

Vous avez pratiqué :

  1. Comprendre votre environnement de travail
  2. Créer et manipuler des fichiers
  3. Écrire et exécuter des scripts shell
  4. Vérifier l'existence de fichiers et de répertoires
  5. Vérifier les permissions des fichiers

Ces compétences seront précieuses au fur et à mesure que vous continuerez à travailler avec des systèmes Linux et à développer des scripts shell plus avancés. N'oubliez pas de toujours vérifier l'existence des fichiers et des répertoires avant d'effectuer des opérations sur eux pour éviter les erreurs dans vos scripts. De plus, faites attention aux permissions des fichiers lorsque vous travaillez avec des données sensibles ou des fichiers système.

Au fur et à mesure de votre progression, vous pourriez souhaiter explorer des tests de fichiers plus avancés, apprendre d'autres constructions de scripting shell telles que les boucles et les fonctions, et pratiquer la combinaison de ces concepts pour créer des scripts plus complexes et puissants.