• Exemples:
• echo *
Tous les fichiers sauf ceux dont le nom commence par un point
• echo *c
Tous les fichiers dont le nom se termine par un ‘c’
• echo .*
Tous les fichiers dont le nom commence par un point
• echo [0-9]*
Tous les fichiers dont le nom commence par un chiffre
• Exemples de commande:
• Date
• touch fic
crée un fichier vide fic
• whoami
affiche le nom de l’utilisateur connecté
• echo
affiche un message (echo "bonjour ! »)
• méta caractères - Caractères spéciaux:
^ * ? \ ; & < > | >> ! ~ ^ [ -
] { } $ @ ( ) # /
• L'astérisque ou étoile: *
• interprété comme toute suite de caractères alphanumériques
• utiliser avec précaution (commande rm * par ex...)
• Le point d’interrogation: ?
• remplace 1 seul caractère alphanumérique
• Le point-virgule: ;
• Séparateur de commandes
• Les crochets: []
• Remplace un caractère choisi parmi ceux énumérés
entre les crochets
• [a-Z] : les lettres
• Exemples :
• [Aa] désigne les caractères A ou a ;
[0-9a-zA-Z] désigne un caractère alphanumérique
quelconque.
• [!0-9] désigne l'ensemble des caractères sauf les chiffres.
- méta caractères - Caractères spéciaux:
• L’anti-slash: \
• Inhibe la signification du méta-caractère qui suit
• Attention aux guillemets et aux « quotes », ils ont
également une signification particulière :
• ' ' quotes
• " " doubles quotes ou guillemets
•` back quote
- méta caractères - Caractères spéciaux:
• Interprétation des chaînes de caractères
• Texte entre '' (simples quotes): le texte n’est pas
interprété mais considéré comme un mot
• Texte entre "" (doubles quotes): seuls sont
interprétés les métacaractères $, \ et `
• Texte entre `` (anti quotes, back quote ): considéré
comme une commande à interpréter, et c’est le
résultat qui sera utilisé.
$ echo \* => le caractère * perd sa signification de
caractère générique
*
$ echo *
tata toto
$
$ echo \\ => le deuxième caractère \ perd sa signification de caractère de
protection
\
$ echo N\'oublie pas !
N'oublie pas !
$
• Le caractère \ permet également d’ôter la signification
de la touche Entrée. Cela a pour effet d’aller à la ligne
sans qu’il y ait exécution de la commande.
$ echo coucou \Entrée
>salut Entrée => terminaison de la commande : le
shell l’exécute !
$ coucou salut
à l’intérieur d’une paire de guillemets "" le caractère $ sera
quand même interprété comme une substitution.
$ echo "< * $PWD * >"
< * /home/rachid * >
$
$ echo "< * \"$PWD\" * > "
< * "/home/rachid" * >
$
Protection totale 'chaîne'
Entre une paire d’apostrophes (ʹ), aucun caractère
de chaîne (sauf le caractère ') n'est interprété.
$ echo '< * $PWD * >'
< * $PWD * >
$
• Exemples :
$ echo $EMAIL
[email protected]
$ echo "Mon mail : $EMAIL"
$ echo 'Mon mail : $EMAIL'
Mon mail : $EMAIL
$ echo \?\*\$
?*$
$ echo \\\?\\\*\\\$
\?\*\$
$ echo '$?*'
$?*
$ echo ” ’ ” ’ ” ’
’"
Quand on juxtapose deux chaînes de caractères quotées,
le shell les concatène, et elles ne forment qu'un
argument.
Les métacaractères
• Syntaxe
• ; sépare les commandes
• & lance en tâche de fond
• || séparateur conditionnel, si échoue
• && séparateur conditionnel, si succès
• commande1; commande2 : exécute commande1, puis commande2
• commande1 & : le système lance commande1 et redonne immédiatement
la main à l’utilisateur pour d’autres travaux
• commande1 || commande2 : exécute commande1, si le code de retour
est mauvais alors il exécute commande2
• commande1 && commande2 : exécute commande1, si le code de retour
est bon alors il exécute commande2
vLe système de fichiers
• Stocke les données:
• de façon hiérarchique
• structure arborescente
• TOUT est fichier
• 3 types de fichiers:
• fichiers ordinaires
• répertoires
• fichiers spéciaux (périph., …)
v système de fichiers
• Le système de fichier offre à l’utilisateur une vision homogène et structurée
des données et des ressources : disques, mémoires, périphériques.
• Le système gère la création des fichiers, leur destruction, leur correspondance
avec les dispositifs physiques, ainsi qu’un certain nombre d’autres
caractéristiques, telles que la protection .
• Il les organise enfin, en général, en une structure arborescente
Ø Système de fichiers
• Arborescence de répertoires et de fichiers
• Répertoire courant = .
• Répertoire parent = ..
• Répertoire racine = /
• Répertoire d’accueil = ~
(exemple : /home/nestor)
1
6
Ø Système de fichiers
• Répertoire (par exemple) :
• /home/votrelogin/
• Par exemple, /home/rachid
• Chemin absolu d'un fichier (nom absolu)
• « / » + liste des répertoires traversés pour y accéder
Remarque :
• Par exemple, /home/rachid/cours/index.html Commence par « / »
• Chemin relatif d'un fichier (nom relatif)
• Liste des répertoires traversés à partir du répertoire dans lequel on se trouve à ce
moment là
• Par exemple, je suis dans /home/rachid, je veux accéder à /home/rachid/public-
1
7
html/cours/index.html
./public-html/cours/index.html
Ø Système de fichiers
• ls : affiche la liste des fichiers et répertoires
• options courantes de ls :
• -l : affichage des fichiers avec les champs suivants
• permissions
• nombre de références (sous répertoires ou liens)
• utilisateur
• groupe
• taille
• date de dernière modification
• nom
• -a : affichage de tous les fichiers même « cachés » (i.e. les fichiers
commençant par un .)
• -R : affichage récursif (répertoires à sous-répertoires à …)
Ø ls avec options
• Les principales options sont :
• -l : format détaillé
• -a : liste aussi les fichiers qui commencent par « . »
•-t : affiche en triant par date de dernière modification
• -g : affiche les informations sur le groupe
Autorisation d’accès propriétaire Taille du fichier Nom du fichier
drwxrwxrwx 6 elkhyari profs 8425 Mar 2 11:38 Tps_Linux/
Type du fichier Nb de liens groupe date de dernière
qui amènent modification
au même fichier
Ø Type du fichier
• L’indicateur du type de fichier peut prendre :
• - : un fichier ordinaire
• d : un répertoire
• l : un lien symbolique
• b : un fichier spécial de type bloc (périphériques …)
• c : un fichier spécial de type caractère (périphériques …)
• s : socket
•…
Ø Commandes Fichiers
• touch mon-fichier : création d'un fichier vide
• more mon-fichier : visualisation d'un fichier par page
• rm mon-fichier : suppression
• mv mon-fichier répertoire : déplacer
• mv mon-fichier nouveau-nom : renommer
• cp nom-fichier répertoire-d'accueil/autre-nom : copie
• file mon-fichier : type de fichier
ØOpérations sur les fichiers textes
§ cat <fichier> : affiche le contenu du fichier
§ more : Similaire à cat mais l'affichage s'arrête en fonction de la taille du
terminal, il suffit de taper espace pour faire défiler le texte
§ less : Similaire à more mais en mieux
§ touch : touch <toto> : crée un fichier “toto” vide
§ grep : grep <motif> <fichier> : affiche les lignes du fichier contenant le
“motif”
- l'option -i permet d'ignorer la casse
- l'option -v permet d'inverser la recherche (“tout sauf ...”)
Commandes liées aux répertoires
• La commande servant à créer des répertoires est :
mkdir [options] répertoires… (make directory)
• Il suffit d’avoir le droit d’écrire (w) dans le répertoire père
• Pour créer une arborescence entière, on utilise l’option –p
Exemple : créer l’arborescence ~/TP_Linux/TP_Groupe1
mkdir –p TP_Linux/TP_Groupe1
• La commande servant à supprimer un répertoire est :
rmkdir répertoire (remove directory)
• Le répertoire doit être vide
Commandes liées aux répertoires
• La commande servant à déplacer des répertoires est :
mv répertoire répertoire-d’accueil
mv répertoire nouveau-nom
• Il suffit d’avoir le droit d’écrire (w) dans le répertoire père
La commande servant Connaitre le repertoire courant “Print Working
Directory”
pwd
Ø Fichiers et répertoires
Listage, taille et arborescence
du (“Disk Usage”) : affiche des informations sur l'occupation du disque :
Exemple :
# du -h
24k ./doc
432k ./lib
236k ./patches
8.0k ./packaging/lsb
8.0k ./packaging/solaris
20k ./packaging
92k ./testsuite
6.2M .
df (“Disk Free”) : affiche l'espace libre et l'espace utilisé d'un disque :
Exemple :
turing:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 109G 14G 89G 14% /
Ø Fichiers et répertoires
• cp (“Copy”) : copier un fichier/répertoire
- Syntaxe : cp <fichier source> <fichier destination>
1- cp aaa bbb : copie aaa en bbb si bbb n'est pas un répertoire, sinon, copie aaa dans
bbb
2- si bbb est un fichier déjà existant, il sera remplacé par la copie de aaa
Les options de cp :
-i : confirmation de copie
-f : retrait de tout genre de confirmation
-r : copie récursive (répertoires)
-rf : copie récursive sans confirmation
ØFichiers et répertoires
• mv (“Move”) : déplacer (ou renommer) un fichier/répertoire
- Syntaxe similaire à cp : mv <source> <destination>
- La différence est que le fichier source est supprimé (il est déplacé à
l'emplacement spécifié en destination)
ØFichiers et répertoires
• rm (“Remove”) : supprimer un fichier/répertoire
- Syntaxe : “rm <fichier>” ou “rm -r <répertoire>”
Les options de rm :
-i : confirmation de suppression
-f : retrait de tout genre de confirmation
-r : suppression récursive (répertoires)
-rf : suppression récursive sans confirmation (DANGEREUX !!!)
Ø Les liens
• Liens physiques
ln <nom_fic> <nouveau_nom_fic>
• permet de donner plusieurs noms à un fichier
• pas pour les répertoires
• ne traverse pas les partitions
• un fic est détruit quand TOUS ses liens physiques sont supprimés (≠
raccourcis)
• Liens symboliques
ln -s <nom_fic> <nouveau_nom_fic>
• crée un raccourci
• traverse les partitions
• fonctionne aussi pour les répertoires
• Lister les liens d’un fichier: ls -l <nom_fic>
ØFichiers et répertoires
Archivage et compression
tar : permet de créer et de récupérer une archive
Syntaxe :
- tar cvf archive.tar fichier1 fichier2 fichier3 ...
pour créer une archive contenant les fichiers 1 à 3
- tar xvf archive.tar
pour récupèrer les fichiers contenus dans l'archive
gzip et bzip2
- permettent de compresser/décompresser des fichiers
Association de tar et de gzip/bzip2 : meilleure compression
Exemple : tar xfz archive.tar.gz / tar xfj archive.tar.bz2
Ø Les alias
• On peut lancer des commandes qui ne possèdent pas un exécutable
du même nom en créant un alias avec la commande alias du shell
alias nom_alias=‘commandes’
% alias ll=‘ls –l’
% ll
-rw-r----- 1 rachid profs 362514 Sep 5 12:40 Cours.tex
drw-r--rw- 4 rachid profs 10 Jan 7 15:41 Recherche/
• La liste des alias peut être obtenu par la commande : alias
% alias
b=‘/bin’
ll=‘ls –l’
rm=‘rm –i‘
• On peut enlever un alias en utilisant la commande : unalias
unalias nom_alias
Ø Propriétés et droit d’accès
• Un fichier (ou un répertoire) appartient à un utilisateur et
au groupe de l’utilisateur
• Chaque fichier est affecté d’un type et des droits d’accès
3
2
• Accès aux fichiers réglementé
(sauf: tous les droits pour root)
• 3 types d’utilisateurs:
• propriétaire (user)
• personnes du mm groupe (group)
• les autres (others)
• 3 types de permissions
• lecture (r) afficher le contenu afficher le contenu
• écriture (w) modifier créer/supp fichiers
• exécution (x) exécuter traverser
fichier répertoire
• Affichage des caractéristiques: ls -
groupe
l
-rw-r--r-- 1 rachid ensa1 58K 16 Jul 09:19 tp1.tex
nb liens propriétaire taille date nom
group
type
-rw-r--r--
user others
• Changer les permissions: chmod
chmod <classe op perm, …>|nnn <fic>
• classe: – chaque perm = 1 valeur:
u : user r 4
g : group w 2
o : others x 1
a : all rien 0
• op:
= : affectation – déf. des permissions (par addition) pour chaque classe
- : suppr.
+ : ajout
• perm:
r : lecture exemples:
w : écriture chmod u=rwx,g=rx,o=rx tp1.tex
x : exécution chmod a+x script.sh
chmod 755 script.sh
Ø Modification des droits d’accès aux fichiers
• La protection d’un fichier ne peut être modifier que par le propriétaire
• La commande utilisée est : chmod (Change MODe)
• Il existe deux modes d’utilisation de cette commande :
Par un nombre octal Symbolique
% chmod [nombre octal] fichier % chmod [who]op[permission] fichier
rwx r-x r-- who : est une combinaison de lettre
u = user = propriétaire
111 101 100
g = groupe
o = other = autres
754 a = all = tous = ugo
op : + ajoute un droit d’accès
Représentation binaire - supprime un droit d’accès
7 = 1x2^2 + 1x2^1 + 1x2^0
= affecte un droit de manière absolue
5 = 1x2^2 + 0x2^1 + 1x2^0 permission : r, w, x
Ø Modification des droits d’accès aux fichiers
Exemple :
% ls –l Cours.tex
-rw-r----- 1 elkhyari profs 362514 Sep 5 12:40 Cours.tex
% chmod 777 Cours.tex
% ls –l Cours.tex
-rwxrwxrwx 1 elkhyari profs 362514 Sep 5 12:40 Cours.tex
% chmod g-w,o-wx Cours.tex
% ls –l Cours.tex
-rwxr-xr-- 1 elkhyari profs 362514 Sep 5 12:40 Cours.tex
% chmod go=r Cours.tex
% ls –l Cours.tex
-rwxr--r-- 1 elkhyari profs 362514 Sep 5 12:40 Cours.tex
Ø Droits d’accès à la création d’un fichier
• La protection d’un fichier, le nom du propriétaire et le nom du groupe
auquel vous appartenez sont établis à sa création
• Ces paramètres ne peuvent être modifiés que par son propriétaire
• La commande permettant de définir un masque de protection des
Fichiers (et répertoires) est : umask
• la commande umask dans un terminal donne la valeur par defaut
Il existe deux modes d’utilisation de cette commande :
Par un nombre octal Symbolique
% umask [nombre base 8] % umask [who]op[permission]
permission
111 111 111 permanente
111 101 100 à 754 % umask u=rwx,g=rx,o=r
% umask
000 010 011
023
% umask -S
023 u=rwx, g=rx, o=r
% umask 023
Question : umask 002 ????????
Ø Droits d’accès aux répertoires
• L’interprétation des droits est différente de celle des fichiers
• Les informations concernant un répertoire est données par la commande : ls –dl répertoire
• L’interprétation des protections est :
r : autorise la lecture du contenu du répertoire, permet de voir la liste des fichiers (et
sous-répertoires) contenu dans le répertoire. Permet de lister le contenu avec ls
x : autorise l’accès au répertoire ( à l’aide de la commande cd).
w : autorise la création, la suppression et le changement du nom d’un élément du
répertoire. Cette permission est indépendante de l’accès aux fichiers du répertoire.