2.4 Leçon 1
Certification : |
Linux Essentials |
---|---|
Version : |
1.6 |
Thème : |
2 Trouver son Chemin sur un Système Linux |
Objectif : |
2.4 Création, Déplacement et Suppression de Fichiers |
Leçon: |
1 sur 1 |
Introduction
Cette leçon couvre la gestion des fichiers et des répertoires sous Linux à l’aide d’outils en ligne de commande.
Un fichier est une collection de données avec un nom et un ensemble d’attributs. Si, par exemple, vous deviez transférer certaines photos de votre téléphone à un ordinateur et leur donner des noms descriptifs, vous auriez alors un tas de fichiers d’images sur votre ordinateur. Ces fichiers ont des attributs tels que l’heure du dernier accès au fichier ou de sa dernière modification.
Un répertoire est un type de fichier spécial utilisé pour organiser les fichiers. Une bonne façon de concevoir les répertoires est de les comparer aux dossiers utilisés pour organiser les documents dans une armoire à dossiers. Contrairement aux dossiers papier, vous pouvez facilement placer des répertoires à l’intérieur d’autres répertoires.
La ligne de commande est le moyen le plus efficace de gérer des fichiers sur un système Linux. Le shell et les outils en ligne de commande ont des caractéristiques qui rendent l’utilisation de la ligne de commande plus rapide et plus facile qu’un gestionnaire de fichiers graphique.
Dans cette section, vous utiliserez les commandes ls
, mv
, cp
, pwd
, find
, touch
, rm
, rmdir
, echo
, cat
et mkdir
pour gérer et organiser les fichiers et les répertoires.
Sensibilité à la Casse
Contrairement à Microsoft Windows, les noms de fichiers et de répertoires sur les systèmes Linux sont sensibles à la casse. Cela signifie que les noms /etc/
et /ETC/
sont des répertoires différents. Essayez les commandes suivantes :
$ cd / $ ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr $ cd ETC bash: cd: ETC: No such file or directory $ pwd / $ cd etc $ pwd /etc
La commande pwd
vous montre le répertoire dans lequel vous êtes actuellement. Comme vous pouvez le voir, la navigation vers /ETC
n’a pas fonctionné car il n’existe pas de tel répertoire. La navigation vers le répertoire /etc
qui existe, a réussi.
Création de Répertoires
La commande mkdir
est utilisée pour créer des répertoires.
Créons un nouveau répertoire au sein de notre répertoire personnel :
$ cd ~ $ pwd /home/user $ ls Desktop Documents Downloads $ mkdir linux_essentials-2.4 $ ls Desktop Documents Downloads linux_essentials-2.4 $ cd linux_essentials-2.4 $ pwd /home/emma/linux_essentials-2.4
Durant cette leçon, toutes les commandes seront exécutées dans ce répertoire ou dans l’un de ses sous-répertoires.
Pour revenir facilement au répertoire de la leçon depuis n’importe quel autre endroit de votre système de fichiers, vous pouvez utiliser la commande :
$ cd ~/linux_essentials-2.4
Le shell interprète le caractère ~
comme votre répertoire personnel.
Lorsque vous êtes dans le répertoire de la leçon, créez d’autres répertoires que nous utiliserons pour les exercices. Vous pouvez ajouter à mkdir
tous les noms de répertoires, séparés par des espaces :
$ mkdir creating moving copying/files copying/directories deleting/directories deleting/files globs mkdir: cannot create directory ‘copying/files’: No such file or directory mkdir: cannot create directory ‘copying/directories’: No such file or directory mkdir: cannot create directory ‘deleting/directories’: No such file or directory mkdir: cannot create directory ‘deleting/files’: No such file or directory $ ls creating globs moving
Remarquez le message d’erreur et que seuls les répertoires moving
, globs
et creating
ont été créés. Les répertoires copying
et deleting
n’existent pas encore. mkdir
, par défaut, ne crée pas de répertoire à l’intérieur d’un répertoire qui n’existe pas. L’option -p
ou --parents
indique à mkdir
de créer des répertoires parents s’ils n’existent pas. Essayez la même commande mkdir
avec l’option -p
:
$ mkdir -p creating moving copying/files copying/directories deleting/directories deleting/files globs
Maintenant, vous n’avez plus de messages d’erreur. Voyons voir quels répertoires existent maintenant :
$ find . ./creating ./moving ./globs ./copying ./copying/files ./copying/directories ./deleting ./deleting/directories ./deleting/files
Le programme find
est généralement utilisé pour rechercher des fichiers et des répertoires, mais sans aucune option, il vous montrera la liste de tous les fichiers, répertoires et sous-répertoires de votre répertoire courant.
Les options -t
et -r
sont particulièrement pratiques pour lister le contenu d’un répertoire avec ls
. Elles permettent de trier la sortie par temps (-t
) et d’inverser l’ordre de tri (-r
). Dans ce cas, les fichiers les plus récents se trouveront en bas de la sortie.
Création de Fichiers
En règle générale, les fichiers seront créés par les programmes qui travaillent avec les données stockées dans les fichiers. Un fichier vide peut être créé à l’aide de la commande touch
. Si vous exécutez la commande touch
sur un fichier existant, le contenu du fichier ne sera pas modifié, mais l’horodatage de modification des fichiers sera mis à jour.
Exécutez la commande suivante pour créer quelques fichiers pour la leçon de globbing :
$ touch globs/question1 globs/question2012 globs/question23 globs/question13 globs/question14 $ touch globs/star10 globs/star1100 globs/star2002 globs/star2013
Vérifions maintenant que tous les fichiers existent dans le répertoire globs
:
$ cd globs $ ls question1 question14 question23 star1100 star2013 question13 question2012 star10 star2002
Vous remarquez comment touch
a créé les fichiers ? Vous pouvez visualiser le contenu d’un fichier texte avec la commande cat
. Essayez-la sur un des fichiers que vous venez de créer :
$ cat question14
Comme touch
crée des fichiers vides, vous ne devriez obtenir aucun résultat. Vous pouvez utiliser la commande echo
avec >
pour créer des fichiers texte simples. Essayez-la :
$ echo hello > question15 $ cat question15 hello
echo
affiche du texte sur la ligne de commande. Le caractère >
indique au shell d’écrire la sortie d’une commande dans le fichier spécifié au lieu de votre terminal. Cela conduit à ce que la sortie de echo
, hello
dans ce cas, soit écrite dans le fichier question15
. Ceci n’est pas spécifique à echo
, il peut être utilisé avec n’importe quelle commande.
Soyez prudent lorsque vous utilisez >
! Si le fichier cîble existe déjà, il sera écrasé !
Renommage de Fichiers
Les fichiers sont déplacés et renommés avec la commande mv
.
Définissez moving
comme votre répertoire de travail :
$ cd ~/linux_essentials-2.4/moving
Créez des fichiers pour vous entraîner. Vous devriez déjà être familiarisé avec ces commandes :
$ touch file1 file22 $ echo file3 > file3 $ echo file4 > file4 $ ls file1 file22 file3 file4
Supposons que file22
est une faute de frappe et qu’il devrait être le file2
. Corrigez-la avec la commande mv
. Lorsque vous renommez un fichier, le premier argument est le nom actuel, le second est le nouveau nom :
$ mv file22 file2 $ ls file1 file2 file3 file4
Faites attention à la commande mv
. Si vous renommez un fichier en lui donnant le nom d’un fichier existant, il l’écrasera. Testons cela avec file3
et file4
:
$ cat file3 file3 $ cat file4 file4 $ mv file4 file3 $ cat file3 file4 $ ls file1 file2 file3
Remarquez que le contenu de file3
est maintenant celui de file4
. Utilisez l’option -i
pour que mv
vous alerte si vous êtes sur le point d’écraser un fichier existant. Essayez-la :
$ touch file4 file5 $ mv -i file4 file3 mv: overwrite ‘file3’? y
Déplacement des Fichiers
Les fichiers sont déplacés d’un répertoire à un autre avec la commande mv
.
Créez quelques répertoires pour y déplacer des fichiers :
$ cd ~/linux_essentials-2.4/moving $ mkdir dir1 dir2 $ ls dir1 dir2 file1 file2 file3 file5
Déplacez file1
dans dir1
:
$ mv file1 dir1 $ ls dir1 dir2 file2 file3 file5 $ ls dir1 file1
Remarquez que le dernier argument de mv
est le répertoire de destination. Lorsque le dernier argument de mv
est un répertoire, les fichiers sont déplacés dans celui-ci. Plusieurs fichiers peuvent être spécifiés dans une seule commande mv
:
$ mv file2 file3 dir2 $ ls dir1 dir2 file5 $ ls dir2 file2 file3
Il est également possible d’utiliser mv
pour déplacer et renommer des répertoires. Renommez dir1
en dir3
:
$ ls dir1 dir2 file5 $ ls dir1 file1 $ mv dir1 dir3 $ ls dir2 dir3 file5 $ ls dir3 file1
Suppression de Fichiers et de Répertoires
La commande rm
peut supprimer des fichiers et des répertoires, tandis que la commande rmdir
ne peut supprimer que des répertoires. Nettoyons le répertoire moving
en supprimant file5
:
$ cd ~/linux_essentials-2.4/moving $ ls dir2 dir3 file5 $ rmdir file5 rmdir: failed to remove ‘file5’: Not a directory $ rm file5 $ ls dir2 dir3
Par défaut, rmdir
ne peut supprimer que des répertoires vides, c’est pourquoi nous avons dû utiliser rm
pour supprimer un fichier régulier. Essayez de supprimer le répertoire deleting
:
$ cd ~/linux_essentials-2.4/ $ ls copying creating deleting globs moving $ rmdir deleting rmdir: failed to remove ‘deleting’: Directory not empty $ ls -l deleting total 0 drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 files
Par défaut, rmdir
refuse de supprimer un répertoire qui n’est pas vide. Utilisez rmdir
pour supprimer l’un des sous-répertoires vides du répertoire deleting
:
$ ls -a deleting/files . .. $ rmdir deleting/files $ ls -l deleting directories
La suppression d’un grand nombre de fichiers ou de profondes structures de répertoires comportant de nombreux sous-répertoires peut sembler fastidieuse, mais elle est en fait facile. Par défaut, rm
ne fonctionne que sur les fichiers ordinaires. L’option -r
est utilisée pour passer outre ce comportement. Attention, rm -r
est un excellent pistolet à pied ! Lorsque vous utilisez l’option -r
, rm
ne supprime pas seulement les répertoires, mais tout ce qui se trouve dans ce répertoire, y compris les sous-répertoires et leur contenu. Voyez par vous-même comment rm -r
fonctionne :
$ ls copying creating deleting globs moving $ rm deleting rm: cannot remove ‘deleting’: Is a directory $ ls -l deleting total 0 drwxrwxr-x. 2 emma emma 6 Mar 26 14:58 directories $ rm -r deleting $ ls copying creating globs moving
Vous avez remarqué que deleting
a disparu, même si elle n’était pas vide ? Comme mv
, rm
dispose d’une option -i
pour vous alerter avant toute action. Utilisez rm -ri
pour supprimer les répertoires de la section moving
qui ne sont plus nécessaires :
$ find . ./creating ./moving ./moving/dir2 ./moving/dir2/file2 ./moving/dir2/file3 ./moving/dir3 ./moving/dir3/file1 ./globs ./globs/question1 ./globs/question2012 ./globs/question23 ./globs/question13 ./globs/question14 ./globs/star10 ./globs/star1100 ./globs/star2002 ./globs/star2013 ./globs/question15 ./copying ./copying/files ./copying/directories $ rm -ri moving rm: descend into directory ‘moving’? y rm: descend into directory ‘moving/dir2’? y rm: remove regular empty file ‘moving/dir2/file2’? y rm: remove regular empty file ‘moving/dir2/file3’? y rm: remove directory ‘moving/dir2’? y rm: descend into directory ‘moving/dir3’? y rm: remove regular empty file ‘moving/dir3/file1’? y rm: remove directory ‘moving/dir3’? y rm: remove directory ‘moving’? y
Copie de Fichiers et de Répertoires
La commande cp
est utilisée pour copier des fichiers et des répertoires. Copiez quelques fichiers dans le répertoire copying
:
$ cd ~/linux_essentials-2.4/copying $ ls directories files $ cp /etc/nsswitch.conf files/nsswitch.conf $ cp /etc/issue /etc/hostname files
Si le dernier argument est un répertoire, cp
créera une copie des arguments précédents à l’intérieur de ce répertoire. Comme mv
, plusieurs fichiers peuvent être spécifiés en même temps, à condition que la cible soit un répertoire.
Lorsque les deux opérandes de cp
sont des fichiers et que les deux fichiers existent, cp
écrase le second fichier avec une copie du premier fichier. Pratiquons cela en écrasant le fichier issue
avec le fichier hostname
:
$ cd ~/linux_essentials-2.4/copying/files $ ls hostname issue nsswitch.conf $ cat hostname mycomputer $ cat issue Debian GNU/Linux 9 \n \l $ cp hostname issue $ cat issue mycomputer
Essayons maintenant de créer une copie du répertoire files
dans le répertoire directories
:
$ cd ~/linux_essentials-2.4/copying $ cp files directories cp: omitting directory ‘files’
Comme vous pouvez le constater, cp
ne fonctionne par défaut que sur des fichiers individuels. Pour copier un répertoire, vous utilisez l’option -r
. Gardez à l’esprit que l’option -r
fera que cp
copie également le contenu du répertoire que vous copiez :
$ cp -r files directories $ find . ./files ./files/nsswitch.conf ./files/fstab ./files/hostname ./directories ./directories/files ./directories/files/nsswitch.conf ./directories/files/fstab ./directories/files/hostname
Remarquez comment, lorsqu’un répertoire existant a été utilisé comme destination, cp
crée une copie du répertoire source à l’intérieur de celui-ci ? Si la destination n’existe pas, il la crée et la remplit avec le contenu du répertoire source :
$ cp -r files files2 $ find . ./files ./files/nsswitch.conf ./files/fstab ./files/hostname ./directories ./directories/files ./directories/files/nsswitch.conf ./directories/files/fstab ./directories/files/hostname ./files2 ./files2/nsswitch.conf ./files2/fstab ./files2/hostname
Globbing
Ce que l’on appelle communément le globbing est un langage simple de correspondance de motifs. Les shells en ligne de commande sur les systèmes Linux utilisent ce langage pour désigner des groupes de fichiers dont les noms correspondent à un motif spécifique. POSIX.1-2017 spécifie les caractères suivants pour la correspondance des motifs :
*
-
Correspond à un nombre quelconque de caractères, y compris aucun caractère
?
-
Correspond à n’importe quel caractère une fois
[]
-
Correspond à une classe de caractères
En anglais, cela signifie que vous pouvez dire à votre shell de correspondre à un modèle plutôt qu’à une chaîne de texte littérale. Habituellement, les utilisateurs de Linux spécifient plusieurs fichiers avec un glob au lieu de taper le nom de chaque fichier. Exécutez les commandes suivantes :
$ cd ~/linux_essentials-2.4/globs $ ls question1 question14 question2012 star10 star2002 question13 question15 question23 star1100 star2013 $ ls star1* star10 star1100 $ ls star* star10 star1100 star2002 star2013 $ ls star2* star2002 star2013 $ ls star2*2 star2002 $ ls star2013* star2013
Le shell étend *
à n’importe quel nombre de caractères, donc votre shell interprète star*
comme signifiant tout ce qui, dans le contexte pertinent, commence par star
. Lorsque vous exécutez la commande ls star*
, votre shell n’exécute pas le programme ls avec l’argument star*
, il recherche les fichiers dans le répertoire courant qui correspondent au motif star*
(y compris juste star
), et transforme chaque fichier correspondant au motif en un argument de ls
:
$ ls star*
en ce qui concerne ls
est l’équivalent de
$ ls star10 star1100 star2002 star2013
Le caractère *
ne signifie rien pour ls
. Pour le prouver, exécutez la commande suivante :
$ ls star\* ls: cannot access star*: No such file or directory
Lorsque vous faites précéder un caractère d’un \
, vous demandez à votre shell de ne pas l’interpréter. Dans ce cas, vous voulez que ls
ait un argument star*
à la place de ce que le glob star*
développe.
Le caractère ?
s’étend à n’importe quel caractère une fois. Essayez les commandes suivantes pour vous en rendre compte par vous-même :
$ ls question1 question14 question2012 star10 star2002 question13 question15 question23 star1100 star2013 $ ls question? question1 $ ls question1? question13 question14 question15 $ ls question?3 question13 question23 $ ls question13? ls: cannot access question13?: No such file or directory
Les crochets []
sont utilisés pour faire correspondre des plages ou des classes de caractères. Les crochets []
fonctionnent comme dans les expressions régulières POSIX, mais avec les globs, le ^
est utilisé à la place du !
.
Créez des fichiers pour faire des expériences :
$ mkdir brackets $ cd brackets $ touch file1 file2 file3 file4 filea fileb filec file5 file6 file7
Les plages entre les crochets []
sont exprimées par un -
:
$ ls file1 file2 file3 file4 file5 file6 file7 filea fileb filec $ ls file[1-2] file1 file2 $ ls file[1-3] file1 file2 file3
Plusieurs plages peuvent être spécifiées :
$ ls file[1-25-7] file1 file2 file5 file6 file7 $ ls file[1-35-6a-c] file1 file2 file3 file5 file6 filea fileb filec
Les crochets peuvent également être utilisés pour correspondre à un ensemble spécifique de caractères.
$ ls file[1a5] file1 file5 filea
Vous pouvez également utiliser le caractère ^
comme premier caractère pour tout faire correspondre sauf certains caractères.
$ ls file[^a] file1 file2 file3 file4 file5 file6 file7 fileb filec
La dernière chose que nous aborderons dans cette leçon, ce sont les classes de caractères. Pour correspondre à une classe de caractères, vous utilisez [:nomclasse:]
. Par exemple, pour utiliser la classe de chiffres, qui correspond aux chiffres, vous feriez quelque chose comme ceci :
$ ls file[[:digit:]] file1 file2 file3 file4 file5 file6 file7 $ touch file1a file11 $ ls file[[:digit:]a] file1 file2 file3 file4 file5 file6 file7 filea $ ls file[[:digit:]]a file1a
Le glob file[[:digit:]a]
, correspond à file
suivi d’un chiffre ou d’un a
.
Les classes de caractères prises en charge dépendent de votre région actuelle. POSIX requiert les classes de caractères suivantes pour toutes les régions :
[:alnum:]
-
Lettres et chiffres.
[:alpha:]
-
Lettres majuscules ou minuscules.
[:blank:]
-
Espaces et tabulations.
[:cntrl:]
-
Caractères de contrôle, par exemple : retour arrière, bell, NAK, Echap.
[:digit:]
-
Chiffres (
0123456789
). [:graph:]
-
Les caractères graphiques (tous les caractères sauf
ctrl
et le caractère espace) [:lower:]
-
Lettres minuscules (
a-z
). [:print:]
-
Les caractères imprimables (
alnum
,ponct
et le caractère espace). [:punct:]
-
Les caractères de ponctuation, c’est-à-dire
!
,&
,"
. [:space:]
-
Les caractères d’espacement, par exemple les tabulations, les espaces, les lignes de rappel.
[:upper:]
-
Lettres majuscules (
A-Z
). [:xdigit:]
-
Chiffres hexadécimaux (généralement
0123456789abcdefABCDEF
).
Exercices Guidés
-
Compte tenu de ce qui suit, sélectionnez les répertoires qui seraient créés par la commande
mkdir -p /tmp/outfiles/text/today /tmp/infiles/text/today
$ pwd /tmp $ find . ./outfiles ./outfiles/text
/tmp
/tmp/outfiles
/tmp/outfiles/text
/tmp/outfiles/text/today
/tmp/infiles
/tmp/infiles/text
/tmp/infiles/text/today
-
Que fait l’option
-v
pourmkdir
,rm
, etcp
? -
Que se passe-t-il si vous tentez accidentellement de copier trois fichiers sur la même ligne de commande vers un fichier qui existe déjà au lieu d’un répertoire ?
-
Que se passe-t-il lorsque vous utilisez
mv
pour déplacer un répertoire dans lui-même ? -
Comment supprimer tous les fichiers de votre répertoire courant qui commencent par
old
? -
Lequel des fichiers suivants correspondrait à
log_[a-z]201?*_01.txt
?log_3_2017_Jan_01.txt
log_+_2017_Feb_01.txt
log_b_2007_Mar_01.txt
log_f_201A_Wednesday_01.txt
-
Créez quelques globs pour correspondre à la liste suivante de noms de fichiers :
doc100 doc200 doc301 doc401
Exercices d’Exploration
-
Utilisez la page de manuel de
cp
pour savoir comment faire une copie d’un fichier et faire correspondre les autorisations et le temps de modification à l’original. -
Que fait la commande
rmdir -p
? Expérimentez-la et expliquez en quoi elle diffère derm -r
. -
N’EXÉCUTEZ PAS CETTE COMMANDE : Que pensez-vous que le
rm -ri /*
fera ? (HONNÊTEMENT, N’ESSAYEZ PAS DE LE FAIRE ! ) -
Outre l’utilisation de
-i
, est-il possible d’éviter quemv
n’écrase les fichiers de destination ? -
Expliquez la commande
cp -u
.
Résumé
L’environnement de ligne de commande Linux fournit des outils pour gérer les fichiers. Parmi les plus utilisés, citons cp
, mv
, mkdir
, rm
et rmdir
. Ces outils, combinés avec les globs, permettent aux utilisateurs de faire beaucoup de travaux très rapidement.
De nombreuses commandes ont une option -i
, qui vous alerte avant de faire quelque chose. Cette option peut vous épargner bien des soucis si vous avez fait une faute de frappe.
Beaucoup de commandes ont une option -r
. L’option -r
signifie généralement récursion. En mathématiques et en informatique, une fonction récursive est une fonction qui s’utilise elle-même dans sa définition. En ce qui concerne les outils en ligne de commande, cela signifie généralement appliquer la commande à un répertoire et à tout ce qui s’y trouve.
Commandes utilisées dans cette leçon :
cat
-
Lie et affiche le contenu d’un fichier.
cp
-
Copie des fichiers ou des répertoires.
echo
-
Affiche une chaîne de caractères.
find
-
Parcoure une arborescence de système de fichiers et recherche les fichiers correspondant à un ensemble de critères spécifiques.
ls
-
Affiche les propriétés des fichiers et des répertoires et énumère le contenu d’un répertoire.
mkdir
-
Crée de nouveaux répertoires.
mv
-
Déplace ou renomme des fichiers ou des répertoires.
pwd
-
Affiche le répertoire de travail actuel.
rm
-
Supprime des fichiers ou des répertoires.
rmdir
-
Supprime des répertoires.
touch
-
Crée de nouveaux fichiers vides ou met à jour l’horodatage de modification d’un fichier existant.
Réponses aux Exercices Guidés
-
Compte tenu de ce qui suit, sélectionnez les répertoires qui seraient créés par la commande
mkdir -p /tmp/outfiles/text/today /tmp/infiles/text/today
$ pwd /tmp $ find . ./outfiles ./outfiles/text
Les répertoires marqués seraient créés. Les répertoires
/tmp
,/tmp/outfiles
, et/tmp/outfiles/text
existent déjà, doncmkdir
les ignorera./tmp
/tmp/outfiles
/tmp/outfiles/text
/tmp/outfiles/text/today
X
/tmp/infiles
X
/tmp/infiles/text
X
/tmp/infiles/text/today
X
-
Que fait l’option
-v
pourmkdir
,rm
, etcp
?Généralement, l’option
-v
active le fonctionnement verbeux. Elle fait en sorte que les programmes respectifs affichent ce qu’ils font quand ils le font :$ rm -v a b removed 'a' removed 'b' $ mv -v a b 'a' -> 'b' $ cp -v b c 'b' -> 'c'
-
Que se passe-t-il si vous tentez accidentellement de copier trois fichiers sur la même ligne de commande vers un fichier qui existe déjà au lieu d’un répertoire ?
cp
refusera de faire quoi que ce soit et émettra un message d’erreur :$ touch a b c d $ cp a b c d cp: target 'd' is not a directory
-
Que se passe-t-il lorsque vous utilisez
mv
pour déplacer un répertoire dans lui-même ?Vous recevrez un message d’erreur vous indiquant que
mv
ne peut pas faire cela.$ mv a a mv: cannot move 'a' to a subdirectory of itself, 'a/a'
-
Comment supprimer tous les fichiers de votre répertoire courant qui commencent par
old
?You would use the glob
old*
withrm
:$ rm old*
-
Lequel des fichiers suivants correspondrait à
log_[a-z]201?*_01.txt
?log_3_2017_Jan_01.txt
log_+_2017_Feb_01.txt
log_b_2007_Mar_01.txt
log_f_201A_Wednesday_01.txt
X
$ ls log_[a-z]_201?_*_01.txt log_f_201A_Wednesday_01.txt
log_[a-z]
correspond àlog_
suivi de n’importe quelle lettre minuscule, donclog_f_201A_Wednesday_01.txt
etlog_b_2007_Mar_01.txt
correspondent tous deux._201?
correspond à n’importe quel caractère une fois, donc seullog_f_201A_Wednesday_01.txt
correspond. Enfin,*_01.txt
correspond à tout ce qui se termine par_01.txt
, donc notre option restante correspond. -
Créez quelques globs pour correspondre à la liste suivante de noms de fichiers :
doc100 doc200 doc301 doc401
Il existe plusieurs solutions. En voici quelques-unes :
doc* doc[1-4]* doc?0? doc[1-4]0?
Réponses aux Exercices d’Exploration
-
Utilisez la page de manuel de
cp
pour savoir comment faire une copie d’un fichier et faire correspondre les autorisations et le temps de modification à l’original.Vous utiliseriez l’option
-p
. Portion de la page de manuel :$ man cp -p same as --preserve=mode,ownership,timestamps --preserve[=ATTR_LIST] preserve the specified attributes (default: mode,ownership,time‐ stamps), if possible additional attributes: context, links, xattr, all
-
Que fait la commande
rmdir -p
? Expérimentez-la et expliquez en quoi elle diffère derm -r
.Elle fait en sorte que
rmdir
se comporte commemkdir -p
. Si on lui passe une arborescence de répertoires vides, elle les supprime tous.$ find . ./a ./a/b ./a/b/c $ rmdir -p a/b/c $ ls
-
N’EXÉCUTEZ PAS CETTE COMMANDE : Que pensez-vous que
rm -ri /*
fera ? (SÉRIEUSEMENT, N’ESSAYEZ PAS DE LA FAIRE ! )Il supprimera tous les fichiers et répertoires accessibles en écriture par votre compte utilisateur. Cela inclut tous les systèmes de fichiers en réseau.
-
Outre l’utilisation de
-i
, est-il possible d’éviter quemv
n’écrase les fichiers de destination ?Oui, l’option
-n
ou--no-clobber
empêchemv
d’écraser les fichiers.$ cat a a $ cat b b $ mv -n a b $ cat b b
-
Expliquer
cp -u
.L’option
-u
fait en sorte quecp
ne copie un fichier que si la destination est manquante ou plus ancienne que le fichier source.$ ls -l total 24K drwxr-xr-x 123 emma student 12K Feb 2 05:34 .. drwxr-xr-x 2 emma student 4.0K Feb 2 06:56 . -rw-r--r-- 1 emma student 2 Feb 2 06:56 a -rw-r--r-- 1 emma student 2 Feb 2 07:00 b $ cat a a $ cat b b $ cp -u a b $ cat b b $ cp -u a c $ ls -l total 12 -rw-r--r-- 1 emma student 2 Feb 2 06:56 a -rw-r--r-- 1 emma student 2 Feb 2 07:00 b -rw-r--r-- 1 emma student 2 Feb 2 07:00 c