Gérer les fichiers sous Red Hat Enterprise Linux

Red Hat Enterprise LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous acquerrez une expérience pratique de la gestion des fichiers et des répertoires à l'aide d'outils en ligne de commande essentiels dans un environnement RHEL. Vous apprendrez à explorer votre emplacement actuel et à lister le contenu avec pwd et ls, à naviguer dans les répertoires et à créer des fichiers avec cd et touch, et à organiser efficacement les fichiers et les répertoires avec mkdir, cp, mv et rm.

De plus, vous découvrirez comment créer des liens entre les fichiers à l'aide de ln (liens physiques et symboliques) et comment sélectionner efficacement des fichiers avec des expansions de shell, vous dotant ainsi de compétences fondamentales pour la gestion des fichiers en ligne de commande.

Explorez votre emplacement actuel et listez le contenu avec pwd et ls

Dans cette étape, vous apprendrez à explorer votre emplacement actuel dans le système de fichiers et à en lister le contenu à l'aide des commandes pwd et ls. Comprendre votre répertoire de travail actuel et pouvoir visualiser son contenu sont des compétences fondamentales pour naviguer et gérer les fichiers depuis la ligne de commande.

Tout d'abord, déterminons votre répertoire de travail actuel à l'aide de la commande pwd. pwd signifie "print working directory" (imprimer le répertoire de travail) et affiche le nom complet du chemin de votre emplacement actuel dans le système de fichiers.

pwd

Vous devriez voir une sortie similaire à celle-ci, indiquant votre répertoire actuel :

/home/labex

Ensuite, vous utiliserez la commande ls pour lister le contenu de votre répertoire actuel. ls signifie "list" (lister) et liste le contenu des répertoires pour le répertoire spécifié ou, si aucun répertoire n'est donné, pour le répertoire de travail actuel.

ls

Vous devriez voir une sortie montrant le contenu de votre répertoire personnel :

project

La commande ls possède plusieurs options utiles pour afficher plus d'informations sur les fichiers et les répertoires.

  1. L'option -l (format de liste long) fournit des informations détaillées sur chaque fichier et répertoire, y compris les permissions, le nombre de liens physiques, le propriétaire, le groupe, la taille et la date de dernière modification.

    ls -l

    Vous devriez voir une sortie similaire à celle-ci :

    total 0
    drwxr-xr-x 2 labex labex 6 Aug 27  2024 project
  2. L'option -a (tous les fichiers) liste tous les fichiers, y compris les fichiers cachés. Sous Linux, les noms de fichiers commençant par un point (.) sont considérés comme cachés. De plus, . fait référence au répertoire actuel, et .. fait référence au répertoire parent.

    ls -a

    Vous devriez voir une sortie similaire à celle-ci, incluant les fichiers de configuration cachés :

    .  ..  .bash_history  .bash_logout  .bash_profile  .bashrc  .tmux.conf  project
  3. La combinaison de -l et -a en -la donne une liste détaillée de tous les fichiers, y compris les fichiers cachés.

    ls -la

    Ceci affichera des informations détaillées pour tous les fichiers et répertoires, y compris les fichiers cachés :

    total 20
    drwx------ 1 labex labex  72 Jun  4 03:12 .
    drwxr-xr-x 1 root  root   19 Aug 27  2024 ..
    -rw------- 1 labex labex  31 Jun  4 03:13 .bash_history
    -rw-r--r-- 1 labex labex  18 Feb 15  2024 .bash_logout
    -rw-r--r-- 1 labex labex 141 Feb 15  2024 .bash_profile
    -rw-r--r-- 1 labex labex 877 Jun  4 03:12 .bashrc
    -rw-r--r-- 1 labex labex  68 Aug 27  2024 .tmux.conf
    drwxr-xr-x 2 labex labex   6 Aug 27  2024 project
  4. L'option -R (récursif) liste le contenu de tous les sous-répertoires de manière récursive. Pour démontrer cela, créons d'abord un sous-répertoire.

    mkdir mydir

    Maintenant, utilisez ls -R pour voir la liste récursive.

    ls -R

    Vous devriez voir les répertoires mydir et project listés, suivis de leur contenu :

    .:
    mydir  project
    
    ./mydir:
    
    ./project:

    Enfin, supprimons le répertoire mydir pour nettoyer l'environnement pour les étapes suivantes.

    rmdir mydir

    Cette commande ne fonctionne que pour les répertoires vides. Vous en apprendrez davantage sur rmdir et rm dans une étape ultérieure.

Command line ls output example

Dans cette étape, vous apprendrez à changer votre répertoire de travail actuel à l'aide de la commande cd et à créer des fichiers vides à l'aide de la commande touch. Ces commandes sont essentielles pour organiser vos fichiers et naviguer efficacement dans le système de fichiers.

Tout d'abord, vérifions votre emplacement actuel et naviguons vers le répertoire project qui a été montré à l'étape 1.

pwd

Vous devriez voir /home/labex comme sortie (votre répertoire personnel).

Maintenant, naviguons vers le répertoire project en utilisant la commande cd :

cd project

Vérifiez votre nouvel emplacement :

pwd

Vous devriez maintenant voir /home/labex/project comme sortie.

Créons maintenant un nouveau répertoire nommé documents à l'intérieur de votre répertoire project actuel. Vous utiliserez la commande mkdir, que vous avez brièvement rencontrée à l'étape précédente.

mkdir documents

Vérifiez que le répertoire documents a été créé :

ls

Vous devriez voir documents listé dans la sortie.

Ensuite, vous utiliserez la commande cd pour changer le répertoire de travail actuel de votre shell vers le répertoire documents nouvellement créé.

cd documents

Après avoir changé de répertoire, il est de bonne pratique de confirmer votre nouvel emplacement à l'aide de pwd :

pwd

La sortie devrait maintenant être /home/labex/project/documents.

La commande cd offre plusieurs options pratiques pour la navigation :

  1. cd - : Cette commande permet de revenir au répertoire précédent dans lequel vous étiez. Essayons-la.

    cd -

    Vous devriez être de retour dans /home/labex/project. Vérifiez avec pwd :

    pwd

    Maintenant, utilisez à nouveau cd - pour revenir à /home/labex/project/documents :

    cd -

    Et vérifiez avec pwd :

    pwd
  2. cd .. : Cette commande utilise le répertoire caché .. (deux points) pour remonter d'un niveau vers le répertoire parent, sans avoir besoin de connaître le nom exact du parent.

    cd ..

    Vous devriez maintenant être dans /home/labex/project. Vérifiez avec pwd :

    pwd

    Vous pouvez chaîner .. pour remonter plusieurs niveaux. Par exemple, pour aller à /home/labex depuis /home/labex/project :

    cd ../

    Vérifiez votre emplacement :

    pwd

    Vous devriez être dans /home/labex.

  3. cd (sans aucun argument) : Cette commande vous ramènera toujours à votre répertoire personnel (home directory), qui est /home/labex pour l'utilisateur labex.

    cd

    Vérifiez votre emplacement :

    pwd

    Vous devriez être dans /home/labex.

Naviguons maintenant de retour vers votre répertoire ~/project/documents pour créer des fichiers.

cd ~/project/documents

Vérifiez votre emplacement :

pwd

La sortie devrait être /home/labex/project/documents.

Vous allez maintenant utiliser la commande touch. La commande touch met à jour l'horodatage d'un fichier à la date et à l'heure actuelles sans le modifier autrement. Cette commande est également très utile pour créer des fichiers vides.

Créons deux fichiers vides nommés report.txt et notes.txt dans le répertoire ~/project/documents.

touch report.txt notes.txt

Vérifiez que les fichiers ont été créés en utilisant ls -l :

ls -l

Vous devriez voir une sortie similaire à celle-ci, montrant les fichiers nouvellement créés :

total 0
-rw-rw-r--. 1 labex labex 0 Mar  7 HH:MM report.txt
-rw-rw-r--. 1 labex labex 0 Mar  7 HH:MM notes.txt

Enfin, créons un nouveau répertoire appelé drafts à l'intérieur de ~/project/documents puis créons un fichier à l'intérieur.

mkdir drafts
cd drafts
touch draft_v1.txt

Vérifiez la création du fichier :

ls -l

Vous devriez voir draft_v1.txt listé.

Naviguons maintenant de retour vers votre répertoire ~/project en utilisant une seule commande cd.

cd ~/project

Vérifiez votre emplacement :

pwd

La sortie devrait être /home/labex/project.

Organisez vos fichiers et répertoires avec mkdir, cp, mv et rm

Dans cette étape, vous apprendrez à organiser efficacement vos fichiers et répertoires à l'aide des commandes mkdir (make directory - créer un répertoire), cp (copy - copier), mv (move/rename - déplacer/renommer) et rm (remove - supprimer). Ces commandes sont cruciales pour maintenir un système de fichiers propre et structuré.

Tout d'abord, assurez-vous d'être dans votre répertoire ~/project.

cd ~/project

Vérifiez votre emplacement actuel :

pwd

La sortie devrait être /home/labex/project.

mkdir : Créer des répertoires

Vous avez déjà utilisé mkdir pour créer un seul répertoire. Explorons maintenant des options mkdir plus avancées.

Vous pouvez créer plusieurs répertoires à la fois en les listant comme arguments :

mkdir reports presentations

Vérifiez leur création :

ls

Vous devriez voir documents, presentations et reports listés.

L'option -p (parents) de la commande mkdir est très utile pour créer tous les répertoires parents manquants pour la destination demandée. Cela évite les erreurs si vous essayez de créer un sous-répertoire dans un répertoire parent inexistant.

Créons une structure de répertoires imbriqués : projects/alpha/docs.

mkdir -p projects/alpha/docs

Maintenant, utilisez ls -R pour voir la structure imbriquée nouvellement créée :

ls -R projects

Vous devriez voir :

projects:
alpha

projects/alpha:
docs

projects/alpha/docs:

cp : Copier des fichiers et des répertoires

La commande cp copie des fichiers et des répertoires. Lors de la copie d'un fichier, elle crée un duplicata soit dans le répertoire actuel, soit dans un autre répertoire spécifié.

Copions report.txt du répertoire documents vers le répertoire reports.

cp documents/report.txt reports/

Vérifiez la copie en listant le contenu du répertoire reports :

ls reports

Vous devriez voir report.txt dans le répertoire reports.

Si un fichier portant le même nom existe dans le répertoire cible, cp l'écrasera par défaut.

Pour copier un répertoire et son contenu, vous devez utiliser l'option -r (récursif). Par défaut, cp ignore les répertoires si -r n'est pas spécifié.

Copions l'intégralité du répertoire documents dans projects/alpha/.

cp -r documents projects/alpha/

Vérifiez la copie récursive :

ls -R projects/alpha/documents

Vous devriez voir le contenu du répertoire documents (y compris notes.txt, drafts, et drafts/draft_v1.txt) dupliqué à l'intérieur de projects/alpha/documents.

projects/alpha/documents:
drafts  notes.txt  report.txt

projects/alpha/documents/drafts:
draft_v1.txt

mv : Déplacer et renommer des fichiers et des répertoires

La commande mv déplace des fichiers d'un emplacement à un autre. Elle peut également être utilisée pour renommer des fichiers ou des répertoires. Si vous considérez le chemin absolu d'un fichier comme son nom complet, alors déplacer un fichier revient effectivement à renommer un fichier. Le contenu des fichiers déplacés reste inchangé.

Renommons notes.txt dans le répertoire documents en meeting_notes.txt.

mv documents/notes.txt documents/meeting_notes.txt

Vérifiez le renommage :

ls documents

Vous devriez maintenant voir meeting_notes.txt à la place de notes.txt.

Déplaçons maintenant report.txt du répertoire reports vers documents/drafts.

mv reports/report.txt documents/drafts/

Vérifiez le déplacement :

ls reports

Le répertoire reports devrait maintenant être vide.

ls documents/drafts

Vous devriez voir draft_v1.txt et report.txt dans le répertoire documents/drafts.

L'option -v pour mv affiche une sortie détaillée des opérations de la commande, ce qui peut être utile pour confirmation.

mv -v documents/meeting_notes.txt documents/final_notes.txt

Vous verrez une sortie comme :

renamed 'documents/meeting_notes.txt' -> 'documents/final_notes.txt'

rm : Supprimer des fichiers et des répertoires

La commande rm supprime des fichiers. Soyez prudent avec rm, car les fichiers supprimés ne sont généralement pas récupérables depuis la ligne de commande.

Créons un fichier temporaire pour pratiquer rm.

touch temp_file.txt

Maintenant, supprimons temp_file.txt :

rm temp_file.txt

Vérifiez sa suppression :

ls

temp_file.txt ne devrait plus être listé.

Par défaut, rm ne supprime pas les répertoires. Si vous essayez de supprimer un répertoire non vide sans l'option appropriée, vous obtiendrez une erreur.

rm presentations

Vous verrez une erreur :

rm: cannot remove 'presentations': Is a directory

Pour supprimer des répertoires et leur contenu, vous devez utiliser l'option -r (récursif). La commande rm -r parcourt d'abord chaque sous-répertoire et supprime individuellement leurs fichiers avant de supprimer chaque répertoire.

Supprimons le répertoire presentations et son contenu (qui est actuellement vide, mais -r est toujours requis pour les répertoires).

rm -r presentations

Vérifiez sa suppression :

ls

presentations ne devrait plus être listé.

L'option -i pour rm demande interactivement confirmation avant de supprimer chaque fichier. C'est une bonne mesure de sécurité.

Créons quelques fichiers temporaires supplémentaires, puis supprimons-les interactivement.

touch file1.txt file2.txt
rm -i file1.txt file2.txt

Vous serez invité pour chaque fichier :

rm: remove regular empty file 'file1.txt'? y
rm: remove regular empty file 'file2.txt'? y

Tapez y et appuyez sur Entrée pour chaque invite afin de confirmer la suppression.

L'option -f (force) force la suppression sans demander confirmation à l'utilisateur. Si vous spécifiez à la fois -i et -f, -f a la priorité. Utilisez -f avec une extrême prudence.

Enfin, nettoyons le répertoire projects.

rm -r projects

Vérifiez que projects a disparu :

ls

rmdir : Supprimer les répertoires vides

Vous pouvez également utiliser la commande rmdir pour supprimer les répertoires vides. Elle échouera si le répertoire n'est pas vide.

Créons un répertoire vide et supprimons-le avec rmdir.

mkdir empty_dir
rmdir empty_dir

Vérifiez sa suppression :

ls

empty_dir ne devrait plus être listé.

Si vous essayez de supprimer un répertoire non vide avec rmdir, cela échouera :

mkdir test_dir
touch test_dir/test_file.txt
rmdir test_dir

Vous verrez une erreur :

rmdir: failed to remove 'test_dir': Directory not empty

N'oubliez pas d'utiliser rm -r pour les répertoires non vides.

rm -r test_dir

Créez des liens entre fichiers avec ln (liens physiques et symboliques)

Dans cette étape, vous apprendrez à créer des liens entre les fichiers à l'aide de la commande ln. Les systèmes de fichiers Linux prennent en charge deux types de liens : les liens physiques (hard links) et les liens symboliques (ou soft links). Comprendre la différence entre eux est crucial pour une gestion efficace des fichiers.

Tout d'abord, assurez-vous d'être dans votre répertoire ~/project.

cd ~/project

Vérifiez votre emplacement actuel :

pwd

La sortie devrait être /home/labex/project.

Créons un nouveau fichier nommé original_file.txt avec du contenu pour travailler.

echo "This is the content of the original file." > original_file.txt

Vérifiez le contenu du fichier :

cat original_file.txt

Liens physiques (Hard Links)

Un lien physique est essentiellement un autre nom pour un fichier existant. Il pointe directement vers les mêmes données (inode) sur le périphérique de stockage que le fichier original. Après la création d'un lien physique, vous ne pouvez pas faire la différence entre le nouveau lien physique et le nom original du fichier ; ce sont des moyens également valides d'accéder aux mêmes données.

Vous pouvez déterminer si un fichier a plusieurs liens physiques en utilisant la commande ls -l. La deuxième colonne de la sortie ls -l indique le nombre de liens physiques vers le fichier.

Initialement, original_file.txt a un seul lien physique (lui-même) :

ls -l original_file.txt

Vous devriez voir une sortie similaire à celle-ci, où le nombre 1 indique un lien physique :

-rw-rw-r--. 1 labex labex 35 Mar  7 HH:MM original_file.txt

Maintenant, créons un lien physique vers original_file.txt nommé hard_link.txt en utilisant la commande ln.

ln original_file.txt hard_link.txt

Vérifiez le nombre de liens physiques pour les deux fichiers :

ls -l original_file.txt hard_link.txt

Vous devriez maintenant voir le nombre de liens physiques comme 2 pour les deux fichiers, indiquant qu'ils pointent vers les mêmes données :

-rw-rw-r--. 2 labex labex 35 Mar  7 HH:MM hard_link.txt
-rw-rw-r--. 2 labex labex 35 Mar  7 HH:MM original_file.txt

Pour confirmer qu'ils pointent vers les mêmes données, vous pouvez utiliser l'option ls -i pour afficher le numéro d'inode de chaque fichier. Si les fichiers sont sur le même système de fichiers et que leurs numéros d'inode sont identiques, alors les fichiers sont des liens physiques qui pointent vers le même contenu de fichier de données.

ls -i original_file.txt hard_link.txt

Les numéros d'inode devraient être identiques :

1234567 original_file.txt  1234567 hard_link.txt

Si vous modifiez le contenu d'un fichier, les modifications seront reflétées dans l'autre, car il s'agit des mêmes données sous-jacentes.

echo "Adding new line." >> hard_link.txt
cat original_file.txt

Vous verrez :

This is the content of the original file.
Adding new line.

Même si le fichier original est supprimé, vous pouvez toujours accéder au contenu du fichier à condition qu'au moins un autre lien physique existe. Les données sont supprimées du stockage uniquement lorsque le dernier lien physique est supprimé, rendant le contenu du fichier non référencé par aucun lien physique.

Supprimons original_file.txt :

rm original_file.txt

Maintenant, essayez d'accéder à hard_link.txt :

cat hard_link.txt

Vous verrez toujours le contenu :

This is the content of the original file.
Adding new line.

Le nombre de liens physiques pour hard_link.txt devrait maintenant être 1 :

ls -l hard_link.txt

Limitations des liens physiques :

  • Vous ne pouvez utiliser des liens physiques qu'avec des fichiers réguliers. Vous ne pouvez pas utiliser la commande ln pour créer un lien physique vers un répertoire ou un fichier spécial.
  • Vous ne pouvez utiliser des liens physiques que si les deux fichiers se trouvent sur le même système de fichiers. Vous pouvez utiliser la commande df pour lister les systèmes de fichiers.

Liens symboliques (Symbolic Links)

Un lien symbolique (également appelé "soft link" ou "symlink") est un type spécial de fichier qui pointe vers un autre fichier ou répertoire par son chemin. C'est similaire à un raccourci sous Windows. Contrairement aux liens physiques, les liens symboliques ne pointent pas directement vers les données ; ils pointent vers le nom du fichier ou du répertoire cible.

Créons un nouveau fichier nommé target_file.txt pour notre lien symbolique.

echo "This is the target file for the symbolic link." > target_file.txt

Maintenant, créons un lien symbolique nommé sym_link.txt pointant vers target_file.txt en utilisant la commande ln -s.

ln -s target_file.txt sym_link.txt

Vérifiez les détails du lien symbolique en utilisant ls -l :

ls -l target_file.txt sym_link.txt

Vous remarquerez quelques différences :

  • Le premier caractère de la liste détaillée pour sym_link.txt est l (lettre l), indiquant qu'il s'agit d'un lien symbolique.
  • La sortie montre sym_link.txt -> target_file.txt, indiquant explicitement vers quoi il pointe.
  • La taille du lien symbolique est très petite (c'est juste la longueur du chemin cible), pas la taille du fichier cible.
  • Le nombre de liens physiques pour sym_link.txt est 1.
-rw-rw-r--. 1 labex labex 45 Mar  7 HH:MM target_file.txt
lrwxrwxrwx. 1 labex labex 14 Mar  7 HH:MM sym_link.txt -> target_file.txt

Vous pouvez accéder au contenu de target_file.txt via sym_link.txt :

cat sym_link.txt

Vous verrez :

This is the target file for the symbolic link.

Différences clés et comportements des liens symboliques :

  • Liaison inter-systèmes de fichiers : Les liens symboliques peuvent lier deux fichiers sur différents systèmes de fichiers.

  • Liaison vers des répertoires : Les liens symboliques peuvent pointer vers un répertoire, pas seulement vers un fichier régulier. Créons un lien symbolique vers votre répertoire documents.

    ln -s documents doc_shortcut

    Maintenant, vous pouvez utiliser cd dans doc_shortcut comme s'il s'agissait du répertoire documents lui-même :

    cd doc_shortcut

    Vérifiez votre emplacement. Notez que pwd affiche par défaut le chemin du lien symbolique :

    pwd

    Sortie : /home/labex/project/doc_shortcut

    Si vous souhaitez que pwd affiche le chemin réel du répertoire vers lequel le lien symbolique pointe, utilisez l'option -P :

    pwd -P

    Sortie : /home/labex/project/documents

    Maintenant, retournez à ~/project :

    cd ~/project
  • Liens symboliques "dangling" (pendants) : Lorsque le fichier régulier original (la cible) est supprimé, le lien symbolique existe toujours mais pointe vers un fichier manquant. C'est ce qu'on appelle un "lien symbolique pendant".

    Supprimons target_file.txt :

    rm target_file.txt

    Maintenant, vérifiez sym_link.txt avec ls -l :

    ls -l sym_link.txt

    Vous verrez que sym_link.txt existe toujours, mais sa cible target_file.txt est affichée en rouge ou dans une couleur différente (selon la configuration de votre terminal) pour indiquer qu'elle est cassée :

    lrwxrwxrwx. 1 labex labex 14 Mar  7 HH:MM sym_link.txt -> target_file.txt

    Si vous essayez de faire un cat sur le lien symbolique pendant, cela échouera :

    cat sym_link.txt

    Sortie :

    cat: sym_link.txt: No such file or directory

Enfin, nettoyons les fichiers et les liens créés dans cette étape.

rm hard_link.txt sym_link.txt doc_shortcut
ls

Vous ne devriez voir que les répertoires documents et reports restants des étapes précédentes.

Sélectionnez efficacement des fichiers avec les expansions de shell

Dans cette étape, vous apprendrez à sélectionner efficacement des fichiers et des répertoires en utilisant diverses fonctionnalités d'expansion du shell, notamment la mise en correspondance de motifs (globbing), l'expansion tilde, l'expansion d'accolades (brace expansion), l'expansion de variables et la substitution de commandes. Ces fonctionnalités vous permettent d'effectuer des opérations sur plusieurs fichiers avec des commandes concises.

Tout d'abord, assurez-vous d'être dans votre répertoire ~/project.

cd ~/project

Vérifiez votre emplacement actuel :

pwd

Le résultat attendu est /home/labex/project.

Pour démontrer les expansions du shell, créons un ensemble de fichiers et de répertoires.

mkdir data
cd data
touch file1.txt file2.log file_a.txt file_b.log report_2023.txt report_2024.log
touch image.jpg document.pdf archive.zip
mkdir dir1 dir2 dir3
cd ..

Maintenant, listez le contenu du répertoire data pour voir les fichiers que vous avez créés :

ls data

Vous devriez voir :

archive.zip  dir1  dir2  dir3  document.pdf  file1.txt  file2.log  file_a.txt  file_b.log  image.jpg  report_2023.txt  report_2024.log

Mise en Correspondance de Motifs (Globbing)

La mise en correspondance de motifs, également connue sous le nom de globbing, vous permet de sélectionner des fichiers basés sur des motifs en utilisant des caractères spéciaux appelés métacaractères.

Métacaractère Correspond à Exemple
* Toute chaîne de zéro ou plusieurs caractères. *.txt correspond à tous les fichiers se terminant par .txt.
? N'importe quel caractère unique. file?.txt correspond à file1.txt, fileA.txt, etc.
[abc...] N'importe quel caractère unique dans la classe spécifiée. file[12].txt correspond à file1.txt ou file2.txt.
[!abc...] N'importe quel caractère unique n'étant pas dans la classe spécifiée. file[!1].txt correspond à fileA.txt mais pas à file1.txt.
[[:alpha:]] Tout caractère alphabétique. file[[:alpha:]].txt correspond à fileA.txt.
[[:digit:]] Tout chiffre unique de 0 à 9. file[[:digit:]].txt correspond à file1.txt.

Essayons quelques exemples dans le répertoire data.

  1. Utilisation de * :
    Lister tous les fichiers se terminant par .txt :

    ls data/*.txt

    Résultat :

    data/file1.txt  data/file_a.txt  data/report_2023.txt

    Lister tous les fichiers contenant file dans leur nom :

    ls data/*file*

    Résultat :

    data/file1.txt  data/file2.log  data/file_a.txt  data/file_b.log
  2. Utilisation de ? :
    Lister les fichiers qui ont exactement un caractère avant .log :

    ls data/file?.log

    Résultat :

    data/file2.log
  3. Utilisation de [] pour les ensembles de caractères :
    Lister les fichiers qui commencent par report_ et contiennent soit 2023 soit 2024 dans leur nom :

    ls data/report_[2][0][2][34].*

    Résultat :

    data/report_2023.txt  data/report_2024.log
  4. Utilisation de {} pour l'expansion d'accolades :
    Lister les fichiers commençant par file et se terminant par .txt ou .log :

    ls data/file*.{txt,log}

    Résultat :

    data/file1.txt  data/file2.log  data/file_a.txt  data/file_b.log

Expansion Tilde ~

Le caractère tilde (~) s'étend au répertoire personnel de l'utilisateur actuel (/home/labex). Lorsqu'il est suivi d'un nom d'utilisateur, il s'étend au répertoire personnel de cet utilisateur.

echo ~

Résultat :

/home/labex
echo ~root

Résultat :

/root
echo ~/project/data

Résultat :

/home/labex/project/data

Expansion d'Accolades (Brace Expansion) {}

L'expansion d'accolades génère des chaînes arbitraires. Elle est utile pour créer des listes de fichiers ou de répertoires avec des noms similaires sans avoir à taper chaque élément individuellement.

  1. Liste séparée par des virgules :
    Créer les fichiers report_jan.txt, report_feb.txt, report_mar.txt :

    touch data/report_{jan,feb,mar}.txt

    Les lister :

    ls data/report_*.txt

    Résultat :

    data/report_2023.txt  data/report_jan.txt  data/report_feb.txt  data/report_mar.txt
  2. Plage de nombres ou de lettres :
    Créer les fichiers doc1.txt, doc2.txt, doc3.txt :

    touch data/doc{1..3}.txt

    Les lister :

    ls data/doc*.txt

    Résultat :

    data/doc1.txt  data/doc2.txt  data/doc3.txt

    Créer les répertoires chapterA, chapterB, chapterC :

    mkdir data/chapter{A..C}

    Les lister :

    ls data/chapter*

    Résultat :

    data/chapterA  data/chapterB  data/chapterC

Expansion de Variables

Les variables shell stockent des valeurs qui peuvent être développées dans les commandes. Vous définissez une variable avec VARNAME=valeur et accédez à sa valeur en utilisant $VARNAME ou ${VARNAME}.

MY_DIR=data
echo "My directory is: $MY_DIR"

Résultat :

My directory is: data

Vous pouvez utiliser des variables dans les commandes :

ls $MY_DIR

Le résultat sera le contenu du répertoire data.

Substitution de Commande

La substitution de commande vous permet d'utiliser la sortie d'une commande comme faisant partie d'une autre commande. Ceci est réalisé en encadrant la commande par $(commande) ou des apostrophes inversées `commande`. La syntaxe $(commande) est généralement préférée car elle peut être imbriquée.

Obtenons la date actuelle et utilisons-la dans un nom de fichier.

touch data/log_$(date +%Y-%m-%d).txt

Listez le répertoire data pour voir le nouveau fichier :

ls data/log_*.txt

Le résultat sera similaire à :

data/log_2024-03-07.txt

Vous pouvez également l'utiliser pour compter les fichiers :

echo "There are $(ls data | wc -l) items in the data directory."

Le résultat sera similaire à :

There are 19 items in the data directory.

Protection des Arguments contre l'Expansion

Parfois, vous souhaitez empêcher le shell d'étendre certains caractères. Vous pouvez le faire en utilisant :

  1. Barre oblique inverse (\): Échappe le caractère unique suivant.

    echo "The value of \$HOME is your home directory."

    Résultat :

    The value of $HOME is your home directory.
  2. Guillemets simples (''): Empêchent toute expansion du shell à l'intérieur des guillemets.

    echo 'The current date is $(date +%Y-%m-%d).'

    Résultat :

    The current date is $(date +%Y-%m-%d).
  3. Guillemets doubles (""): Empêchent la plupart des expansions du shell, mais autorisent l'expansion de variables ($VAR) et la substitution de commande ($()).

    MY_DATE=$(date +%Y-%m-%d)
    echo "Today's date is $MY_DATE."

    Résultat :

    Today's date is 2024-03-07.

    Comparaison avec les guillemets simples :

    echo 'Today is $MY_DATE.'

    Résultat :

    Today's date is $MY_DATE.

Enfin, nettoyons le répertoire data.

rm -r data

Résumé

Dans ce laboratoire, vous avez appris les outils fondamentaux de la ligne de commande pour gérer les fichiers et répertoires sous RHEL. Vous avez commencé par maîtriser pwd pour identifier votre répertoire de travail actuel et ls pour lister le contenu des répertoires, y compris l'utilisation d'options telles que -l pour des informations détaillées et -a pour afficher les fichiers cachés. Vous avez ensuite progressé dans la navigation du système de fichiers avec cd et la création de nouveaux fichiers avec touch.

De plus, vous avez acquis une maîtrise de l'organisation de votre système de fichiers en utilisant mkdir pour créer des répertoires, cp pour copier des fichiers et des répertoires, mv pour les déplacer ou les renommer, et rm pour les supprimer. Le laboratoire a également couvert la création de liens physiques (hard links) et symboliques (symbolic links) à l'aide de ln, et comment sélectionner efficacement les fichiers en utilisant les expansions du shell, améliorant ainsi votre capacité à gérer efficacement les fichiers et les répertoires depuis la ligne de commande.