-
Universit Pierre et Marie CurieParis VI
Master de Sciences et Technologie : Mention Physique et
Applications Mention Sciences de lUnivers,
Environnement, cologie
Mthodes numriques et informatiquesUE 4P009
Unix et programmation
LenvironnementUnix
[email protected]@lmd.polytechnique.frMarine.Bonazzola@[email protected]@lkb.upmc.frThibaut.Karassouloff@[email protected]@[email protected]@[email protected]
avec des contributions de :
Frdric BernardoAlbert HertzogFrdric Meynadier 20142015
-
UPMC M1 : MNI
Notations La police machine crire , espacement fixe, est utilise
pour indiquer les
lments du langage unix. Les crochets [. . . ] dlimitent
gnralement 1 les lments optionnels de la syntaxe
ou les arguments optionnels des commandes ; ces symboles ne font
pas partie de lasyntaxe.
Lors de la description de la syntaxe, lusage de la police
italique espacement fixeindique o lutilisateur doit substituer les
identificateurs, expressions, ou valeursquil a choisis.
Les combinaisons de touches impliquant la touche de contrle sont
parfois notesplus brivement avec laccent circonflexe : par exemple
la combinaison Ctrl Cpeut tre note simplement sous la forme ^C.
Exemple
La syntaxe dcrite comme suit :syntaxe
grep [-option ] motif [fichier ]
peut tre utilise comme dans les exemples suivants :
grep -i septembre /etc/motd
avec loption -i, le motif septembre et le fichier /etc/motd,
grep toto
sans option, avec le motif toto, sans fichier donc en lisant les
donnes saisies au clavier.
Indications de lecture Sous-section facultative
Les sections (ou sous-sections) qui peuvent tre omises en
premire lecture sont indiquespar le symbole plac en marge comme
ci-dessus.
Conseils pratiquesLes rgles de bon usage du langage, qui, au del
de la norme, sont motives par desobjectifs de lisibilit, de
portabilit ou de robustesse du code source, sont repres parle
symbole dans la marge extrieure du texte, comme pour ce
paragraphe.
DifficultsLes points prsentant des difficults particulires ou
des risques derreur sont indiqusBpar le symbole B dans la marge
extrieure du texte, comme pour ce paragraphe.
Ce document a t mis en page grce au traitement de texte
LATEX.
1. Quand les crochets font partie de la syntaxe, leur
signification est dcrite explicitement, parexemple pour dfinir des
ensembles de caractres dans les gnrateurs de noms de fichiers
(11.2.1),ou dans les expressions rationnelles (6.3.2) ou dans les
structures de contrle de type case (14.1.2).
ii v.958 20142015
-
Table des matires
Notations . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . iiIndications de lecture . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . ii
Table des matires iii
1 Introduction 11.1 Bref historique dunix et linux . . . . . . .
. . . . . . . . . . . . . . . . . . 11.2 Principales
caractristiques du systme UNIX . . . . . . . . . . . . . . . . 11.3
Prsentation du document . . . . . . . . . . . . . . . . . . . . . .
. . . . . 2
1.3.1 Unix interprteur de commandes . . . . . . . . . . . . . .
. . . . . 21.3.2 Unix langage de programmation . . . . . . . . . .
. . . . . . . . . 21.3.3 Rsums aide-mmoire . . . . . . . . . . . .
. . . . . . . . . . . . . 2
1.4 Les diffrents shells : avertissement . . . . . . . . . . . .
. . . . . . . . . . 2
2 Session Unix, rseau 42.1 Session utilisateur . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Compte utilisateur . . . . . . . . . . . . . . . . . . . .
. . . . . . . 42.1.2 Session texte et session graphique . . . . . .
. . . . . . . . . . . . . 4
2.2 Les commandes unix . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 62.2.1 Syntaxe lmentaire des commandes unix . . .
. . . . . . . . . . . 62.2.2 Aides linteractivit . . . . . . . . .
. . . . . . . . . . . . . . . . 62.2.3 La documentation en ligne
avec man . . . . . . . . . . . . . . . . . 72.2.4 Exemples de
commandes . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Commandes de gestion de fichiers et de rpertoires . . . . .
. . . . . . . . 82.3.1 Lister les fichiers avec ls . . . . . . . .
. . . . . . . . . . . . . . . 92.3.2 Afficher le contenu dun
fichier texte avec cat, more ou less . . . 92.3.3 Afficher le dbut
(head) ou la fin (tail) dun fichier texte . . . . . 102.3.4 Dtruire
un fichier avec rm . . . . . . . . . . . . . . . . . . . . . . .
102.3.5 Copier un fichier avec cp . . . . . . . . . . . . . . . . .
. . . . . . 102.3.6 Comparer le contenu de deux fichiers texte avec
diff . . . . . . . 102.3.7 Renommer ou dplacer un fichier avec mv .
. . . . . . . . . . . . . 102.3.8 Compresser/dcompresser un fichier
. . . . . . . . . . . . . . . . . 102.3.9 Compter les lignes, mots
ou caractres avec wc . . . . . . . . . . . 112.3.10 Afficher le
rpertoire courant et en changer . . . . . . . . . . . . . 112.3.11
Manipuler des rpertoires . . . . . . . . . . . . . . . . . . . . .
. . 11
2.4 Environnement rseau . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 122.4.1 Courrier lectronique . . . . . . . . . .
. . . . . . . . . . . . . . . . 122.4.2 Connexion distance via
slogin . . . . . . . . . . . . . . . . . . . 132.4.3 Transfert de
fichiers distance . . . . . . . . . . . . . . . . . . . . 132.4.4
Navigateur . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . 14
3 Hirarchie de fichiers 153.1 Arborescence des fichiers . . . .
. . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.1 Chemins daccs des fichiers et rpertoires . . . . . . . . .
. . . . 163.1.2 Visualisation dune branche avec tree . . . . . . .
. . . . . . . . . 163.1.3 Changement de rpertoire de travail :
exemples . . . . . . . . . . . 17
iii
-
TABLE DES MATIRES UPMC M1 : MNI
3.1.4 Attributs des fichiersdroits daccs . . . . . . . . . . . .
. . . . . 203.2 Autres commandes de gestion des fichiers . . . . .
. . . . . . . . . . . . . 22
3.2.1 Rechercher rcursivement des fichiers avec find . . . . . .
. . . . . 223.2.2 Archiver des arborescences de fichiers avec tar .
. . . . . . . . . . 253.2.3 Copier des fichiers avec la commande
rsync . . . . . . . . . . . . . 283.2.4 Manipuler des chemins avec
dirname et basename . . . . . . . . . 293.2.5 Dcouper des fichiers
avec split et csplit . . . . . . . . . . . . . 29
4 dition, visualisation, impression 314.1 Les fichiers texte et
leurs codes . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.1 Fichiers texte et fichiers binaires . . . . . . . . . . .
. . . . . . . . 314.1.2 Codage des fichiers texte . . . . . . . . .
. . . . . . . . . . . . . . . 314.1.3 Le codage unicode . . . . . .
. . . . . . . . . . . . . . . . . . . . . 324.1.4 Outils de
transcodage des fichiers texte . . . . . . . . . . . . . . . 32
4.2 dition de fichiers texte . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 334.2.1 Les modes des diteurs . . . . . . . . .
. . . . . . . . . . . . . . . . 33
4.3 Lditeur vi . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 344.3.1 Principales requtes de lditeur vi . . .
. . . . . . . . . . . . . . . 344.3.2 Requtes ex . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . 354.3.3 Configuration
de vi . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.4 Les diteurs emacs et xemacs . . . . . . . . . . . . . . . .
. . . . . . . . . 374.4.1 Fonctions de base . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 384.4.2 Principe des raccourcis
clavier . . . . . . . . . . . . . . . . . . . . 384.4.3 Fonctions
ddition de texte . . . . . . . . . . . . . . . . . . . . . .
394.4.4 Aides ldition . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 394.4.5 Ouverture de plusieurs fichiers simultanment . .
. . . . . . . . . . 404.4.6 Fonctions avances . . . . . . . . . . .
. . . . . . . . . . . . . . . . 404.4.7 Internationalisation . . .
. . . . . . . . . . . . . . . . . . . . . . . 414.4.8 URLs . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.5 Impression . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 414.5.1 Gestion des impressions . . . . . . .
. . . . . . . . . . . . . . . . . 414.5.2 Impression de fichiers
non postscript . . . . . . . . . . . . . . . . . 42
5 Introduction aux filtres 435.1 Notion de filtre . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 435.2
Classement avec sort . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 43
5.2.1 Principales options de sort . . . . . . . . . . . . . . .
. . . . . . . 435.2.2 Exemples . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 44
5.3 Remplacement de caractres avec tr . . . . . . . . . . . . .
. . . . . . . . 455.3.1 Dfinition des jeux de caractres . . . . . .
. . . . . . . . . . . . . 455.3.2 Options de tr . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 45
5.4 Autres filtres lmentaires . . . . . . . . . . . . . . . . .
. . . . . . . . . . 465.4.1 Aperu dun fichier avec head et tail . .
. . . . . . . . . . . . . . 465.4.2 Conversion des tabulations avec
expand et unexpand . . . . . . . . 465.4.3 Repliement de lignes
avec fold . . . . . . . . . . . . . . . . . . . . 475.4.4 Slection
de colonnes avec cut . . . . . . . . . . . . . . . . . . . . 48
5.5 Fusion de fichiers texte . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 485.5.1 Concatnation de lignes avec paste . .
. . . . . . . . . . . . . . . 485.5.2 Fusion de lignes selon un
champ commun avec join . . . . . . . . 495.5.3 Mise en garde
concernant les caractres non imprimables . . . . . 49
iv v.958 20142015
-
UPMC M1 : MNI TABLE DES MATIRES
6 Introduction aux expressions rationnelles 516.1 Introduction .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
516.2 Signification des trois caractres spciaux de base . . . . . .
. . . . . . . . 516.3 Caractres devenant spciaux dans certaines
positions . . . . . . . . . . . 52
6.3.1 Ancres . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 526.3.2 Ensembles de caractres . . . . . . . . . .
. . . . . . . . . . . . . . 536.3.3 Classes de caractres . . . . .
. . . . . . . . . . . . . . . . . . . . . 536.3.4 Rfrence dans les
substitutions . . . . . . . . . . . . . . . . . . . . 54
6.4 Groupement en sous-expressions et rfrence . . . . . . . . .
. . . . . . . 546.5 Rgle en cas dambigut dinterprtation . . . . . .
. . . . . . . . . . . . 546.6 Cas des expressions rationnelles
tendues . . . . . . . . . . . . . . . . . . 55
7 Le filtre grep 567.1 Prsentation de la commande grep . . . . .
. . . . . . . . . . . . . . . . . 567.2 Principales options de grep
. . . . . . . . . . . . . . . . . . . . . . . . . . 567.3 Exemples
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 577.4 Autres options . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 57
7.4.1 Recherche de plusieurs motifs avec loption -e . . . . . .
. . . . . . 577.4.2 Variantes de grep : options -F et -E . . . . .
. . . . . . . . . . . . 577.4.3 Affichage des chanes correspondant
au motif : option -o . . . . . . 58
8 Le filtre sed 598.1 Prsentation de sed . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 59
8.1.1 Principes de fonctionnement et intrt . . . . . . . . . . .
. . . . . 598.1.2 Les deux syntaxes possibles . . . . . . . . . . .
. . . . . . . . . . . 598.1.3 Autres options de sed . . . . . . . .
. . . . . . . . . . . . . . . . . 59
8.2 Requtes principales . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 598.2.1 Substituer . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 598.2.2 Transcrire caractre par
caractre . . . . . . . . . . . . . . . . . . 608.2.3 Supprimer des
lignes . . . . . . . . . . . . . . . . . . . . . . . . . . 608.2.4
Imprimer des lignes . . . . . . . . . . . . . . . . . . . . . . . .
. . 608.2.5 Quitter . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 61
8.3 Remarques importantes . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 618.4 Fichier dinstructions . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 618.5 Complment : notion
despace de travail . . . . . . . . . . . . . . . . . . . 62
9 Le filtre awk 639.1 Syntaxe gnrale . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 639.2 Programmation . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 63
9.2.1 Structure des donnes : enregistrement, champ . . . . . . .
. . . . 639.2.2 Principes de base . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 649.2.3 Variables spcifiques . . . . . . . .
. . . . . . . . . . . . . . . . . . 659.2.4 Fonctions incorpores .
. . . . . . . . . . . . . . . . . . . . . . . . 659.2.5
Internationalisation . . . . . . . . . . . . . . . . . . . . . . .
. . . 66
9.3 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 669.3.1 Exemples lmentaires de programmes awk .
. . . . . . . . . . . . 669.3.2 Exemples appliqus un fichier de
donnes particulier . . . . . . . 66
9.4 Les tableaux sous awk . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 679.5 Complments . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 70
9.5.1 Transmission dinformations du shell awk . . . . . . . . .
. . . . 709.5.2 La fonction getline . . . . . . . . . . . . . . . .
. . . . . . . . . . 709.5.3 Instructions de saut . . . . . . . . .
. . . . . . . . . . . . . . . . . 719.5.4 Format des sorties . . .
. . . . . . . . . . . . . . . . . . . . . . . . 719.5.5
Redirections de sortie . . . . . . . . . . . . . . . . . . . . . .
. . . 71
20142015 v.958 v
-
TABLE DES MATIRES UPMC M1 : MNI
10 Processus, redirections et tubes 7210.1 Flux standard . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7210.2
Redirections . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 72
10.2.1 Redirection de sortie vers un fichier (> et >>)
. . . . . . . . . . . . 7210.2.2 Redirection de lentre depuis un
fichier ( et 2>>) . . . . 7310.2.4 Redirection de lerreur
standard vers la sortie standard (2>&1) . . 73
10.3 Tubes ou pipes (|) . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 7310.4 Gestion des processus . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . 74
10.4.1 Gnralits : la commande ps . . . . . . . . . . . . . . . .
. . . . . 7410.4.2 Caractres de contrle et signaux . . . . . . . .
. . . . . . . . . . . 7510.4.3 Processus en arrire plan . . . . . .
. . . . . . . . . . . . . . . . . 75
10.5 Complments . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 7610.5.1 Les fichiers spciaux : exemple
/dev/null . . . . . . . . . . . . . . 7610.5.2 Duplication de flux
: tee . . . . . . . . . . . . . . . . . . . . . . . 7710.5.3 Notion
de document joint (
-
UPMC M1 : MNI TABLE DES MATIRES
13 Les commandes test et expr 8913.1 La commande test . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . 89
13.1.1 Comparaisons arithmtiques . . . . . . . . . . . . . . . .
. . . . . . 8913.1.2 Comparaisons de chanes de caractres . . . . .
. . . . . . . . . . . 9013.1.3 Tests sur les fichiers . . . . . . .
. . . . . . . . . . . . . . . . . . . 9013.1.4 Combinaisons de
conditions . . . . . . . . . . . . . . . . . . . . . . 90
13.2 La commande expr . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 9113.2.1 Oprateurs arithmtiques . . . . . . . .
. . . . . . . . . . . . . . . 9113.2.2 Autres oprateurs . . . . . .
. . . . . . . . . . . . . . . . . . . . . 91
13.3 Autres outils pour les calculs . . . . . . . . . . . . . .
. . . . . . . . . . . 9113.3.1 Oprateurs intgrs au shell . . . . .
. . . . . . . . . . . . . . . . . 9113.3.2 Les commandes de calcul
non entier dc et bc . . . . . . . . . . . . 92
14 Structures de contrle du shell 9314.1 Les conditions . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
14.1.1 La construction if ... fi . . . . . . . . . . . . . . . .
. . . . . . 9314.1.2 La construction case ... esac . . . . . . . .
. . . . . . . . . . . 94
14.2 Les structures itratives . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 9514.2.1 La structure for ... do ... done . .
. . . . . . . . . . . . . . . 9514.2.2 La structure until ... do
... done . . . . . . . . . . . . . . . . 9614.2.3 La structure
while ... do ... done . . . . . . . . . . . . . . . . 96
14.3 Complments : branchements . . . . . . . . . . . . . . . . .
. . . . . . . . 9714.3.1 La commande exit . . . . . . . . . . . . .
. . . . . . . . . . . . . 9714.3.2 La commande break . . . . . . .
. . . . . . . . . . . . . . . . . . . 9714.3.3 La commande continue
. . . . . . . . . . . . . . . . . . . . . . . . 9814.3.4 La
commande trap . . . . . . . . . . . . . . . . . . . . . . . . . .
9814.3.5 Structures itratives et redirections . . . . . . . . . . .
. . . . . . . 99
15 Retour sur le shell 10015.1 Le shell : approfondissement . .
. . . . . . . . . . . . . . . . . . . . . . . . 100
15.1.1 Notion de commande interne . . . . . . . . . . . . . . .
. . . . . . 10015.1.2 Les alias du shell . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 10015.1.3 Les fonctions du shell . .
. . . . . . . . . . . . . . . . . . . . . . . 10015.1.4
Interprtation dun nom de commande avec type . . . . . . . . . .
10115.1.5 Algorithme dinterprtation de la ligne de commande . . . .
. . . . 10115.1.6 Fichiers dinitialisation du shell . . . . . . . .
. . . . . . . . . . . 10215.1.7 Options du shell . . . . . . . . .
. . . . . . . . . . . . . . . . . . 102
15.2 Excutions spciales de commandes . . . . . . . . . . . . . .
. . . . . . . . 10215.2.1 Excution dans le shell courant . . . . .
. . . . . . . . . . . . . . . 10215.2.2 Excution en remplacement du
shell courant . . . . . . . . . . . . 10215.2.3 Double valuation
par le shell : eval . . . . . . . . . . . . . . . . . 10315.2.4
Priorit dexcution avec nice . . . . . . . . . . . . . . . . . . . .
10315.2.5 Mesure du temps dexcution avec time . . . . . . . . . . .
. . . . 10315.2.6 Rcursivit . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 103
15.3 Autres commandes internes . . . . . . . . . . . . . . . . .
. . . . . . . . . 10415.3.1 Analyse syntaxique avec getopts . . . .
. . . . . . . . . . . . . . . 104
15.4 Internationalisation . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 10515.4.1 Les variables de contrle local .
. . . . . . . . . . . . . . . . . . . . 10515.4.2 Les valeurs des
variables de contrle local . . . . . . . . . . . . . . 10515.4.3
Outils associs au codage UTF-8 . . . . . . . . . . . . . . . . . .
. 106
20142015 v.958 vii
-
TABLE DES MATIRES UPMC M1 : MNI
16 Conclusion 10816.1 Du bon usage dunix . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 108
16.1.1 Analyser avant de coder... . . . . . . . . . . . . . . .
. . . . . . . . 10816.1.2 Choisir les outils dans la panoplie unix
. . . . . . . . . . . . . . . 10816.1.3 Mettre au point et corriger
. . . . . . . . . . . . . . . . . . . . . . 10816.1.4 Documenter .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
16.2 Conclusion . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 109
Bref guide dinstallation de Cygwin 1101 Introduction . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102
Installation des composants de base . . . . . . . . . . . . . . . .
. . . . . 1103 Installation dun serveur X . . . . . . . . . . . . .
. . . . . . . . . . . . . 1114 Connexion une machine distante . . .
. . . . . . . . . . . . . . . . . . . 1115 Transfert de fichiers .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1126
Installation de programmes ne figurant pas dans la liste . . . . .
. . . . . 112
Types de fichiers, extensions et outils associs 113
Structures de contrle dans diffrents langages 114
Bibliographie 115
Index 119
Mmento vi 125
Mmento emacs 127
viii v.958 20142015
-
Chapitre 1
Introduction
1.1 Bref historique dunix et linuxLe systme dexploitation
(operating system) unix date des annes 1970. Lessentiel dusystme
est crit en langage C 1, ce qui lui a assur une large diffusion
dans laquelle lesmilieux universitaires ont jou un rle essentiel.
Plusieurs branches parallles dunix sesont trs rapidement dveloppes
(notamment BSD et System V), conduisant quelquesdiffrences dans les
commandes et leur syntaxe.Des efforts ont ensuite t entrepris en
vue dune synthse des meilleurs aspects desdiffrents unix avec la
dfinition de la norme POSIX (Portable Operating System Inter-face).
Limplmentation de cette norme est encore incomplte et quelques
diffrencessubsistent pour certaines commandes 2 selon les versions
de systme unix. Mais ces dif-frences concernent beaucoup moins
lutilisateur que ladministrateur du systme.Noter enfin que les
systmes unix sappuient largement sur les programmes du projetGNU
dont lambition est de dvelopper un systme complet (Gnu is Not
Unix). Cesprogrammes dune grande qualit sont distribus sous la
licence dite GPL (General PublicLicense) de la Free Software
Fondation.
1.2 Principales caractristiques du systme UNIXUnix est un systme
interactif, multi-tches et multi-utilisateurs capable de partager
desressources (fichiers, authentification, ...) selon une hirarchie
de droits daccs. Il com-porte une documentation en ligne (man) des
commandes. Ce systme sintgre facilementdans le rseau pour changer
des informations et dvelopper des applications rpartiesentre
plusieurs calculateurs. Unix comporte un mcanisme trs puissant de
chanagedes processus par les tubes (pipes) qui permet daccomplir
des tches complexes parsimple assemblage doutils lmentaires. Enfin,
linterprteur (shell) intgre un langagede programmation permettant
dautomatiser les tches rptitives.Le systme unix est un systme
ouvert, implment sur diverses architectures, du por-table au
super-calculateur : propritaires (aix dibm, hp-ux de hp, solaris de
sun, OS-X dapple, ...) ; libres (linux, net-bsd, free-bsd,
...).
Le systme unix est aujourdhui install sur la plupart des gros
calculateurs scientifiques.Mais cest le systme linux, une des
versions dunix du domaine public, qui a permis derendre unix de
plus en plus populaire dans le domaine des ordinateurs personnels
et despetits serveurs. Linux est aujourdhui dominant dans le calcul
intensif avec plus de 95 %des calculateurs du TOP 500 (cf.
http://www.top500.org/statistics).Linux est disponible dans de
nombreuses distributions issues de quelques grandes branchesqui
diffrent notamment par les outils de maintenance du systme et des
packages logiciels et des orientations serveur ou grand public :
Slackware, Redhat et ses dri-ves (mandrake puis mandriva et
aujourdhui mageia, centOS, Scientific Linux, Fedora),qui utilisent
le systme de gestion de paquets RPM (Redhat Package Manager),
debiandont drivent knopix et ubuntu, ... (pour avoir une ide du
foisonnement, consulter par
1. Moins de 10 % du noyau unix est crit en assembleur.2. Par
exemple : affichage des processus avec ps, impression avec lpr/lp,
...
1
http://www.top500.org/statistics
-
Chapitre 1. Introduction UPMC M1 : MNI
exemple larbre gnalogique dunix http://www.levenez.com/unix/ ou
celui de linuxhttp://fr.wikipedia.org/wiki/Distribution_Linux).
1.3 Prsentation du documentLe systme unix est un systme
dexploitation que lutilisateur dcouvre tout dabordau travers de
linterprteur de commandes que constitue le shell. Lutilisation
dunixen interface ligne de commande ncessite un certain effort
dapprentissage. Mais cetinvestissement permet daccder des outils
trs efficaces de manipulation de donnes(transformation de fichiers
textes, gestion de la hirarchie de fichiers, ...) et de contrledes
procdures (unix ou issues dautres langages), dautant plus puissants
que le shellest aussi un langage de programmation.Lorganisation du
document respecte cette progression en prsentant dabord les
outilsde base avant daborder la programmation en shell.
1.3.1 Unix interprteur de commandesLa premire partie de ce
document dcrit les principales commandes qui permettentdditer des
fichiers texte, de modifier leur contenu (par lintermdiaire de
filtres notam-ment) et de les manipuler. Aprs une brve prsentation
des premiers contacts avec unix(chapitre 2), le systme de fichiers
est dcrit (chapitre 3), puis les commandes ddition(chapitre 4). La
notion de filtre est ensuite aborde avec des commandes
lmentaires(chapitre 5), puis la notion de motif gnrique est
introduite avec les expressions rgu-lires (chapitre 6), afin de
dcrire trois filtres paramtrables trs puissants : grep qui permet
de rechercher des motifs (chapitre 7), sed qui est un diteur de
flux (chapitre 8), et enfin awk qui permet de programmer dans une
syntaxe proche de celle du lan-
gage C et possde des fonctions de tableur (chapitre 9).Cette
partie sachve sur les processus et le mcanisme des redirections et
tubes, per-mettant lassemblage des outils de base, au cur du systme
unix (chapitre 10).
1.3.2 Unix langage de programmationLa deuxime partie de ce
document aborde le shell en tant que langage de programma-tion.
Sont prsents ici les variables du shell (chapitre 11), qui
permettent de paramtrerles procdures shell (chapitre 12), ainsi que
les tests (chapitre 13), utiliss dans les struc-tures de contrle
(chapitre 14). Les notions avances du shell sont voques
rapidementau chapitre 15. Quelques conseils de bonne programmation
sont fournis en guise deconclusion. Il est conseill de les lire
avant dentreprendre lcriture de shell-scripts.
1.3.3 Rsums aide-mmoireEnfin, des fiches aide-mmoire ont t
regroupes la fin du document, pour faciliter laconsultation rapide.
Ces rsums concernent notamment : Les structures de contrle du shell
compares celles dautres langages tels que C,
fortran et scilab (p. 114) ; Les diteurs de texte vi (p. 125) et
emacs (p. 127), aprs lindex et la bibliographie.
1.4 Les diffrents shells : avertissementIl existe de nombreuses
versions de linterprteur de commandes unix ou shell, qui pr-sentent
des diffrences la fois en termes de syntaxe et de possibilits
offertes (fonctionsinternes, interactivit, fichiers de
configuration, ...). Suivant la syntaxe des structures decontrle,
on peut les regrouper essentiellement en deux familles :
2 v.958 20142015
http://www.levenez.com/unix/http://fr.wikipedia.org/wiki/Distribution_Linux
-
UPMC M1 : MNI Chapitre 1. Introduction
les shells de type Bourne, drivs du shell historique sh : ksh 3,
pdksh 4, mksh 5,bash, zsh, ...
les shells du type C-shell, dont les structures de contrle sont
plus proches de cellesdu langage C : csh, tcsh, ...
Ce document naborde que les shells de type Bourne, dans leurs
versions modernes :ksh (Korn-shell) et bash (Bourne again shell),
shell par dfaut sur les postes de travailsous linux.Pour plus de
dtails sur les diffrents shells, on se reportera Newham et
Rosenblatt(2006) ou Ramey et Fox (2006) sur bash, Rosenblatt et
Robbins (2002) sur ksh,Kiddle et al. (2004) sur zsh et DuBois
(1995) sur csh et tcsh.Par ailleurs, lessentiel des commandes
traites sont communes aux diffrents systmesunix, dont linux fait
partie. Mais compte tenu de la popularit des systmes
linux,certaines commandes spcifiques de linux sont abordes et la
majorit des exemplestests sous linux.
3. ksh, dvelopp par David Korn et initialement logiciel
propritaire, est maintenant pass dans ledomaine public.
4. pdksh est une version de ksh du domaine public.5. mksh,
MirBSD Korn Shell est un des successeurs de pdksh.
20142015 v.958 3
-
Chapitre 2
Session Unix,environnement rseau
N.-B. : le systme unix distingue minuscules et majuscules : on
dit quil est sensible Bla casse (case sensitive). La plupart des
commandes unix scrivent en minuscules.
2.1 Session utilisateur
2.1.1 Compte utilisateurPour pouvoir ouvrir une session sur une
machine, un utilisateur doit y possder uncompte ; cela signifie que
ladministrateur lui a attribu : un identifiant (ou login) associ un
numro unique (uid) (cf. 2.2.4 p. 8) ; un mot de passe (ou password)
qui doit rester confidentiel ; un groupe (associ son numro unique
gid) parmi ceux dfinis sur la machine 1
(cf. 2.2.4 p. 8) ; un rpertoire daccueil personnel (ou home
directory) destin hberger tous les
sous-rpertoires et fichiers qui lui appartiennent (cf. 3.1, p.
16) ; un interprteur de commandes (ou shell) : sh, ksh, bash, zsh,
csh ou tcsh.
Lensemble de ces informations est stock dans un fichier systme
(souvent /etc/passwd),mais le mot de passe est mmoris 2 sous une
forme crypte ; cest pourquoi ladminis-trateur du systme ne peut
retrouver un mot de passe oubli par un utilisateur
(maisladministrateur peut le modifier).Par exemple, la ligne
dfinissant le compte p6m1mni dans le fichier /etc/passwd prendla
forme (le mot de passe crypt nest pas stock ici et est remplac par
le caractre !) :
p6m1mni:!:40369:2055:Jacques
LEFRERE:/home/p6pfal/p6m1mni:/usr/bin/kshlogin : : uid :
gid:identit de lutilisateur: rpertoire daccueil : shell
Les ressources informatiques tant limites, un quota despace
disque est bien souventspcifi : sil est atteint, lutilisateur ne
peut plus crire 3 dans son espace personnel.
2.1.2 Session texte et session graphiqueLouverture dune session
sur une machine unix peut seffectuer selon deux modes dif-frents
:en mode texte sur une console ou par une connexion distance partir
dune machine
locale via slogin ou ssh 4, par exempleslogin user
@sappli1.datacenter.dsi.upmc.fr
1. Les groupes et leurs gid sont stocks dans le fichier systme
/etc/group2. Pour des raisons de scurit, les mots de passe crypts
sont souvent stocks en dehors du fichier
/etc/passwd, par exemple dans le fichier /etc/shadow/ aux droits
plus ferms.3. Cette interdiction peut empcher louverture dune
session en mode graphique, qui ncessite g-
nralement lcriture dinformations dans lespace personnel. Il faut
alors ouvrir une session en modetexte (cf. 2.1.2, p. 5) pour librer
de lespace disque.
4. ssh assure des communications scurises par cryptage. Lusage
de telnet o les informationscirculent en clair sur le rseau et sont
donc susceptibles dtre interceptes est aujourdhui abandonnsur la
majorit des serveurs.
4
-
UPMC M1 : MNI Chapitre 2. Session Unix, rseau
en mode graphique dans une fentre daccueil dont la prsentation
dpend du ges-tionnaire de fentres (window manager) : fvwm, kde,
gnome, icewm, lxde... Ce ges-tionnaire, qui constitue souvent un
vritable environnement de bureau (DesktopEnvironment) dfinit
linterface graphique (icnes, menus droulants, boutons di-vers, ...)
qui permet de lancer et de contrler les applications et finalement
defermer la session.
Mais les deux types de session sinitient de faon similaire par
lidentification puis lau-thentification de lutilisateur qui doit
saisir 5 successivement :
son identifiant linvite login
son mot de passe linvite password 6
Une fois le nom dutilisateur et le mot de passe reconnus, le
comportement diffre suivantle type de session.
En mode texte : Le systme affiche le mot du jour 7 et la date de
la dernire connexion.La configuration personnelle est active par
lexcution des fichiers de type .profiledans les shells de type sh
ou .login dans les shells de type csh (cf. 15.1.6, p. 102).Ces
fichiers peuvent positionner certaines options du shell,
initialiser des variablesdenvironnement (par exemple : chane de
caractres dinvite, type de terminal uti-lis . . .) et lancer des
commandes qui seront excutes chaque dbut de session.Sinscrit
ensuite lcran une chane de caractres (invite ou prompt en
anglais)invitant lutilisateur entrer des commandes pour interagir
avec le shell. Une foisle travail termin, la commande exit permet
de fermer la session texte.
En mode graphique : Le contrle est pass au gestionnaire de
fentres qui permetde lancer des applications via des menus et des
icnes sans identification ni au-thentification complmentaires :
parmi ces applications, des consoles peuvent treactives qui
permettent de passer des commandes en mode texte. Mais, une
foistoutes les applications termines, il faut signifier au
gestionnaire de fentres la finde la session graphique pour viter
que des applications puissent tre lances sansauthentification par
quelquun dautre sur le poste graphique. Une fois la sessiontermine,
on doit retrouver la fentre graphique daccueil initiale.
Commutation entre mode graphique et mode console sous linux
Sous linux, par exemple en cas de problme en mode graphique
(quota disque atteint oudifficult avec la vido), on peut passer du
mode graphique au mode texte en frappantsimultanment Ctrl Alt F1
par exemple pour travailler sur la console 1. Six pseudo-consoles
sont disponibles de F1 F6 qui permettent douvrir des sessions en
mode texteseul.Le retour en mode graphique seffectue par la frappe
simultane de Ctrl Alt F7 8Ne pas oublier de fermer toutes les
sessions en mode texte ouvertes sur les pseudo-consolesnon affiches
en fin de session graphique.
5. Ne pas utiliser le pav numrique lors de la saisie et vrifier
que la touche majuscule (CapsLock)ne soit pas verrouille.
6. Dans certains cas, aucun cho nest affich lors de la saisie du
mot de passe, de faon ne pasdvoiler aux tmoins le nombre de
caractres saisis.
7. Appuyer sur la barre despacement pour parcourir le mot du
jour page par page ; taper q pourterminer son affichage (voir les
filtres more et less 2.3.2, p. 9).
8. Sur certaines distributions linux, dont Mandriva 2010, il
faut utiliser la touche F8 au lieu de latouche F7 . linverse, sur
la distribution mageia, le mode graphique est accessible via Ctrl
Alt F1alors que Ctrl Alt F2 jusqu F5 permettent daccder des
pseudo-consoles.
20142015 v.958 5
-
Chapitre 2. Session Unix, rseau UPMC M1 : MNI
2.2 Les commandes unix
2.2.1 Syntaxe lmentaire des commandes unixLes lignes de
commandes unix sont interprtes par un shell selon une syntaxe
bienprcise, qui, dans sa forme lmentaire, peut tre dcrite comme
suit :
Une ligne de commande unix est dcoupe par le shell en une suite
de motsspars par des blancs 9. Le premier mot est le nom de la
commande ; les motssuivants constituent les paramtres de la
commande. Chaque mot reprsenteun paramtre, dont le rle est dtermin
par sa position dans la phrase.
Certains paramtres facultatifs, commenant gnralement par le
caractre - , etprcdant les oprandes (qui sont trs souvent des noms
de fichiers), sur lesquels agitla commande, permettent de passer
des options la commande pour contrler finementson comportement.
commande [-options ][liste_d_oprandes ]
Exemple : ls-l/tmp1. ls est la commande (affiche la liste des
fichiers)2. -l est loption (liste longue, avec les attributs des
fichiers)3. /tmp est le nom de rpertoire pass en argument
(rpertoire dont on liste les fichiers)
Les commandes de type GNU respectent aussi deux conventions
complmentaires :1. La fin des paramtres optionnels peut tre indique
par -- , permettant ainsi
dinterprter correctement des noms de fichiers commenant par -
sans lesconfondre avec des spcifications doptions.
2. Si le nom du fichier dentre est remplac par - , les donnes
dentre sont prisessur lentre standard (cf. chap. 10, p. 72).
Remarque : Le shell interprtant les espaces comme des
sparateurs, on vitera leurBemploi dans les noms de fichiers.
2.2.2 Aides linteractivitLes shells modernes disposent de
fonctionnalits facilitant la saisie des commandes :lhistorique et
ldition en ligne des commandes dune part, la compltion
automatiquedes noms de commandes et de fichiers dautre part.
Historique des commandes et dition en ligne
Le shell mmorise la suite des commandes qui ont t effectues. La
primitive (builtin,cf. 15.1.1, p. 100) history permet dafficher la
liste numrote des dernires commandessaisies. Il est dautre part
possible de rappeler les prcdentes commandes et de naviguerdans
cette liste avec les flches verticales : on peut alors diter une
ligne pour ladapter de nouveaux besoins avant de la relancer.Sous
bash, cette dition se fait par dfaut dans le mode emacs 10(cf. 4.4,
p. 37) ; lesdplacements peuvent se faire avec les flches
horizontales et les raccourcis demacsutilisant la touche Ctrl sont
utilisables (cf. 4.4.3, p. 39) :
Ctrl E aussi not ^E (end) positionne en fin de ligne ;
9. Les caractres qui sparent les mots pour le shell sont dfinis
par la variable IFS Internal FieldSeparator qui comporte par dfaut
lespace, la tabulation et la fin de ligne. Dautres caractres
spciauxsoumis interprtation par le shell peuvent intervenir dans ce
dcoupage (cf. la section 15.1.5, p. 101pour une analyse plus prcise
de la ligne de commande), notamment les oprateurs de redirection
(cf.chapitre 10).10. Le mode vi (cf. 4.3, p. 34) est aussi
disponible pour diter la ligne de commande, mais il est moins
intuitif. Le choix du mode se fait par la commande : set -o vi
ou set -o emacs (cf. 15.1.7, p. 102).
6 v.958 20142015
-
UPMC M1 : MNI Chapitre 2. Session Unix, rseau
Ctrl A aussi not ^A (begin donnerait ^B, dj utilis pour back)
positionne endbut de ligne ;
Ctrl W aussi not ^W (word) efface le mot prcdent le curseur
;
Ctrl T aussi not ^T (transpose) change le caractre sous le
curseur avec le pr-cdent.
Compltion automatique des noms de commandes et de fichiers
Le shell comporte un puissant mcanisme de compltion automatique
qui permet dal- lger et surtout de valider la saisie : des
commandes ; des noms de fichiers et de leurs chemins daccs.
Lutilisateur peut se contenter dcrire les premires lettres de la
commande ou du nomde fichier et demander au shell de complter en
frappant la touche Tab de tabulation.Sil ny a aucune ambigut partir
de ces lettres, le shell complte lui-mme, et sinon,il propose (si
les possibilits sont en nombre raisonnable) la liste des
possibilits ; il estalors possible, quitte ritrer le processus, de
complter jusqu lever toute ambigut.Cette possibilit permet de
choisir des noms de fichiers longs, la signification explicite,car
ils ne devront tre saisis quune fois, lors de leur cration. Elle
permet aussi dviterles fautes de frappe en demandant au shell de
vrifier la validit des chemins.
2.2.3 La documentation en ligne avec manPrsentation de la
commande man
La documentation en ligne de la commande cmd est affiche par man
cmd (man tantlabrviation de manual). Elle permet en particulier de
connatre la syntaxe dune com-mande et la liste des options attaches
cette commande. Chaque page de manuelcomporte habituellement les
rubriques suivantes : NOM/Name qui indique brivement la fonction de
la commande (cest cette dfinition
qui est affiche si on lance whatis suivie du nom de la commande)
; SYNOPSIS/Synopsis qui rsume la syntaxe de la commande ;
DESCRIPTION/Description qui dcrit la commande de faon plus dtaille,
prcisant
en particulier le type de paramtres et doptions (flags) admis ;
EXEMPLES/Examples qui prsente quelques exemples dutilisation de la
commande ; OPTIONS/Flags qui dtaille chacune des options de la
commande et prcise leur
syntaxe ; FICHIERS/Files qui indique les ventuels fichiers en
rapport avec la commande ; VOIR AUSSI/See also qui liste les autres
commandes ventuellement en rapport
avec cette fonction.
Les sections des manuels
Les manuels en ligne sont regroups en sections numrotes, parmi
lesquelles :1 pour les commandes usuelles ;3 pour les fonctions des
bibliothques hors appels systme (notamment les fonctions
des bibliothques du langage C) ;8 pour ladministration et le
systme.
Le numro de la section est indiqu entre parenthses en haut de la
page. Certaines pagesexistent dans plusieurs sections et il est
possible de spcifier la section consulter, parexemple : man 3
printf permet daccder la fonction printf du langage C
20142015 v.958 7
-
Chapitre 2. Session Unix, rseau UPMC M1 : MNI
alors que man 1 printf ou simplement man printf affiche le
manuel de la com-mande unix printf.
Enfin, loption -a (all) de man permet dafficher successivement
les manuels trouvs danstoutes les sections. De mme, whatis printf
affiche une brve dfinition de toutes lesversions disponibles de
printf.
Recherche par mot-clef
De manire gnrale, le nom dune commande unix est une abrviation
(en anglais) deson action. Mais comment dterminer le nom des
commandes qui peuvent raliser uneaction donne ? Une premire
indication peut tre fournie en faisant appel la base din-dexation
(cette base, constitue des dfinitions des commandes affiches par
whatis eststocke dans des fichiers comme /usr/share/man/whatis par
exemple 11) des mots-clefsdes commandes :man -k mot-clef ou encore
apropos mot-clefpermet dafficher la liste des commandes dont la
description comporte un mot-clef(keyword) dtermin.Sous linux, une
partie importante de la documentation est fournie sous un format
textepermettant la navigation grce lutilitaire info.Par ailleurs,
les commandes qui respectent les conventions de syntaxe GNU
affichent unmode demploi rsum si on les invoque avec loption
--help.Enfin, on ne peut aujourdhui ngliger limportante source
dinformation que peut fournirlusage averti dun moteur de recherche
sur le web.
2.2.4 Exemples de commandes se reprer parmi les utilisateurs
:
whoami affiche lidentifiant (souvent le nom) de lutilisateurid
affiche les noms et numros dutilisateur et de groupewho affiche la
liste des utilisateurs connectshostname affiche le nom du
calculateuruname affiche le nom du systme dexploitation
changer son mot de passe avec la commande passwd (cf. 3.1.4, p.
20) : une fois lacommande ci-dessus lance, le systme demande de
saisir le mot de passe actuel,puis le nouveau mot de passe qui
devra tre confirm (ceux-ci ne seront pas affichs).
affichage de la date : par exemple en franais 12 avec le format
par dfautdate ven. sept. 14 15:36:45 CEST 2012ou en imposant le
format, par exempledate "+%A %d %B %Y" vendredi 14 septembre 2012De
nombreux formats sont disponibles y compris pour afficher des dates
diffrentesde la date courante comme date -d tomorrow (cf. 10.5.5,
p. 78).
affichage de texte grce la commande echoecho Bonjourecho Comment
vas-tu
dconnexion (logout) par la commande exit
2.3 Commandes de gestion de fichiers et de rper-toires
Avant dentrer dans plus de dtail, examinons les principales
commandes de manipulationde fichiers, leurs options et quelques
exemples lmentaires. On se reportera au manuel en11. Il existe
autant de fichiers whatis que de composantes dans la variable
MANPATH qui contient la
liste des chemins des rpertoires contenant les manuels (cf.
15.1.6, p. 102).12. Laffichage dpend de la langue de travail (cf.
15.4, p. 105).
8 v.958 20142015
-
UPMC M1 : MNI Chapitre 2. Session Unix, rseau
ligne pour une tude plus exhaustive. Ne pas oublier que les
arguments des commandessont dabord interprts par le shell.
2.3.1 Lister les noms et attributs des fichiers avec lsls list :
affiche la liste des fichiers du rpertoire courantls -a all : liste
aussi les fichiers cachs , dont le nom commence par . ls -l long :
affiche aussi les attributs (droits, propritaire, taille, date,
...) des fichiersls -lh human-readable : affiche la taille de faon
plus lisible (kilo, Mga, ...)octetsls -R Recursive : liste tous les
sous-rpertoiresls -F Flag : marque les fichiers rpertoire (/),
excutables (*), les liens (@)ls -d directory : affiche les
rpertoires au lieu de leur contenuls -t time : classe la liste par
ordre de date des fichiersls -r reverse : classe la liste par ordre
inverse
Ne pas oublier que, par dfaut, ls rep liste le contenu du
rpertoire rep, do la ncessit Bde loption -d pour sintresser au
rpertoire lui-mme.Sauf spcification de classement explicite, les
fichiers sont affichs dans lordre lexicogra-phique dtermin par les
variables de contrle local (cf. 15.4.1, p. 105 et 15.4.2, p.
105).Laffichage des attributs dun fichier ncessite le droit x sur
le rpertoire o il est situ(cf. 3.1.4, p. 21).Le marquage des
fichiers produit par loption -F de ls en fonction de leur type etde
leurs droits 13 peut tre renforc par une colorisation de laffichage
via loption--color=auto, par exemple : fichiers excutables en vert
(*), liens symboliques en bleuclair (@), rpertoires en bleu fonc
(/), fichiers avec suid bit en rouge.
Format daffichage de la date avec ls -l
Le format par dfaut daffichage de la date des fichiers dpend de
la distribution unix :1. avec deux champs AAAA-MM-JJ et HH:MM spars
par un blanc :
-rw-r--r-- 1 jal latmos 5159 2013-09-03 18:36 arbre_unix.fig2.
ou trois champs Mmm, JJ et HH:MM o le mois est en lettres et dpend
de la variable
de contrle local :-rw-r--r-- 1 jal latmos 5159 Sep 3 18:36
arbre_unix.figdans ce cas, lanne napparat pas, sauf pour les
fichiers anciens (plus de 6 mois)o elle prend la place des heures
et minutes :-rw-r--r-- 1 jal aero 5159 Sep 24 2010
arbre_unix.fig
Si le second format est plus lisible, le premier, parfaitement
hirarchis, se prte mieux autraitement automatique par les filtres
unix 14. Il est aussi possible de spcifier le formatde la date avec
loption longue 15 --time-style= de ls -l : outre la valeur
'long-iso'(qui correspond au premier format illustr plus haut),
cette option admet aussi les mmesformats que la commande date (cf.
15.4.1, p. 105).
2.3.2 Afficher le contenu dun fichier texte avec cat, more ou
lessmore f1 affiche le fichier f1 page par page
la touche Espace permet davancer dun cranla touche Entre permet
davancer dune lignela touche q (quit) permet de terminer
laffichage
la touche / suivie dun motif permet de rechercher ce motif en
avanantla touche n (next) permet de rechercher loccurrence
suivante
13. Les proprits ainsi soulignes sont donnes par les attributs
affichs en tte de ligne par ls -l.14. Prendre garde que le nombre
de champs de la sortie de ls -l peut donc tre de 8 ou 9 selon
le
format de la date, et en particulier que le numro du champ du
nom de fichier en dpend.15. La documentation complte de cette
option nest disponible pas sous man, mais sous info.
20142015 v.958 9
-
Chapitre 2. Session Unix, rseau UPMC M1 : MNI
less f1 sous linux, plus puissant 16 que more, permet de
remonter dans le texteComme less permet de remonter dans le
fichier, au contraire de more, il ne se termineBpas automatiquement
en fin de fichier : il affiche END sur la ligne dtat, mais il faut
luidemander explicitement par la requte q de sarrter.cat f1
concatenate : affichage (avec dfilement) du contenu du fichier de
nom f1cat f1 f2 concatne les deux fichiers f1 et f2 et affiche le
rsultatcat -n f1 affichage du contenu du fichier de nom f1 avec ses
lignes numrotes
Remarque : noter que, bien quacceptant une liste de fichiers en
paramtres dentre,cat est aussi un filtre, le filtre identit (cf.
chap 10) dont on peut rediriger la sortie dansun fichier. Cette
commande permet donc de concatner plusieurs fichiers texte en
seulfichier, par exemple avec cat f1 f2 f3 >
fichier_resultat.
2.3.3 Afficher le dbut (head) ou la fin (tail) dun fichier
textehead f1 affiche le dbut du fichier f1 (par dfaut les 10
premires lignes)head -n L f1 affiche les L premires lignes de
f1tail f1 affiche la fin du fichier f1 (par dfaut les 10 dernires
lignes)tail -n L f1 affiche les L dernires lignes de f1tail -n +L
f1 affiche les lignes de f1 partir de la L-imetail -f f1 follow :
affiche la fin de f1 en suivant ses mises jour 17
2.3.4 Dtruire un fichier avec rmrm f1 remove : dtruit le fichier
f1rm -i f1 interactive : demande une confirmation avant de
dtruirerm -r rep recursive : dtruit toute la branche sous le
rpertoire rep
2.3.5 Copier un fichier avec cpcp f1 f2 copy : recopie le
fichier f1 sous le nom f2cp f1 f2 ... fn rep recopie les fichiers
f1, f2, ..., fn dans le rpertoire rep
2.3.6 Comparer le contenu de deux fichiers texte avec diffdiff
f1 f2 compare les contenus des fichiers f1 et f2
et affiche lcran les lignes qui diffrentdiff -i f1 f2 permet
dignorer les diffrences portant sur la cassediff -b f1 f2 permet
dignorer les diffrences portant sur les espacesdiff -y f1 f2
prsente les lignes diffrentes dans 2 colonnes en parallle 18
2.3.7 Renommer ou dplacer un fichier avec mvmv f1 f2 move :
renomme le fichier f1 en f2mv f1 f2 rep/ dplace les fichiers f1 et
f2 dans le rpertoire rep
2.3.8 Compresser/dcompresser un fichiergzip fic compresse le
fichier fic en fic.gzgunzip fic.gz dcompresse le fichier fic.gz en
fic16. Dans ses versions rcentes, la commande less active un
prprocesseur dtermin par la variable
denvironnement LESSOPEN, positionne par dfaut |
/usr/bin/lesspipe.sh . Ce filtre permet deconvertir des fichiers
que lon ne pourrait pas afficher directement : entre autres, il
affiche la liste desfichiers dun rpertoire, dcompresse les fichiers
compresss, extrait les fichiers archivs par tar, extraitle texte
des pdf..., mais aussi analyse les fichiers dimage de type pnm, mme
en format ascii. On peutdsactiver cette interprtation avec loption
-L ou --no-lessopen.17. Cette option permet par exemple de
surveiller lavancement de lcriture dun fichier de rsultats.18. La
commande vimdiff permet dditer en parallle deux fichiers sous
lditeur vi, cf. 4.3.3, p. 37.
10 v.958 20142015
-
UPMC M1 : MNI Chapitre 2. Session Unix, rseau
Autres outils de compression/dcompression
Dautres commandes de compression et de dcompression de fichiers
permettent, grce des algorithmes plus sophistiqus, dobtenir de
meilleurs taux de compression 19 : bzip2,unlzma et xz (qui est une
version amliore de unlzma).bzip2 fic compresse le fichier fic en
fic.bz2bunzip2 fic.bz2 dcompresse le fichier fic.bz2 en ficunlzma
-z fic compresse le fichier fic en fic.lzmaunlzma -d fic dcompresse
le fichier fic.lzma en ficxz -z fic compresse le fichier fic en
fic.lzmaxz -d fic dcompresse le fichier fic.lzma en fic
2.3.9 Compter le nombre de lignes, mots, caractres et octetsdun
fichier avec wc
wc f1 word count : compte le nombre de lignes, de mots et
doctets du fichier f1Les options -l, -w, -m, -c permettent de
nafficher respectivement que le nombre delignes, de mots, de
caractres ou le nombre doctets 20. On peut combiner ces optionsde
wc, mais lordre des options est sans influence sur lordre
daffichage des nombresdemands, classs de lentit la plus grande la
plus petite : nombre de lignes, puis Bnombre de mots, puis nombre
de caractres et enfin nombre doctets.
Remarque gnraleLes commandes ls, cat, head, tail, more, less, wc
et rm peuvent sappliquer uneliste de fichiers (par exemple, la
commande rm f1 f2 permet deffacer f1 et f2).
2.3.10 Se reprer (pwd) et se dplacer (cd) au sein de la
hirarchiede fichiers
Se reporter 3.1.1, p. 16 pour les notions de rpertoire de
travail et daccueil.pwd print working directory : affiche le chemin
absolu du rpertoire courantcd rep1 change directory : choisit rep1
comme rpertoire de travailcd permet de revenir dans le rpertoire
daccueil do que lon partecd .. permet de revenir au rpertoire pre
du rpertoire de travailcd - permet de revenir au rpertoire de
travail prcdent dans lhistorique
2.3.11 Manipuler des rpertoires avec mkdir et rmdir (cf. chap.
3)mkdir rep1 make directory : cre le sous-rpertoire de nom
rep1mkdir rep2 rep3 cre les sous-rpertoires rep2 et rep3 dans le
rpertoire de travailrmdir rep1 remove directory : supprime le
rpertoire rep1 sil est videLes commandes cp et mv admettent aussi
des rpertoires comme arguments.cp f1 f2 rep1 recopie les fichiers
f1 et f2 dans le rpertoire rep1cp -r rep1 rep2 recopie la branche
partant de rep1 vers rep2 (cr par la copie)mv f1 rep1 dplace f1
dans le rpertoire rep1 (existant) sous le nom f1mv f1 rep1/toto
dplace f1 dans le rpertoire rep1 (existant) sous le nom totomv rep1
rep2 renomme le rpertoire rep1 en rep2mv rep1 chemin/ dplace la
branche sous le rpertoire rep1 sous le rpertoire chemin
19. Ils sont gnralement plus lents, mais restent rapides la
dcompression notamment lalgorithmeLZMA (Lempel-Ziv-Markov
chain-Algorithm) utilis par unlzma et xz, et sont parfois choisis
pour dis-tribuer des outils logiciels (par exemple les pages du
manuel man).20. Attention : dans les codages multi-octets, en
particulier en unicode, on doit distinguer octet et
caractre, qui peut scrire sur plusieurs octets. Loption -m
permet dafficher le nombre de caractres.Loption -m de la commande
wc est sensible lenvironnement de contrle local (cf. 15.4, p. 105)
et plusprcisment au codage des caractres (cf. 4.1.2, p. 31) .
20142015 v.958 11
-
Chapitre 2. Session Unix, rseau UPMC M1 : MNI
2.4 Environnement rseauLe systme unix est conu pour sintgrer
dans un environnement de machines reliesen rseau. Ce rseau, quil
soit filaire ou sans fil (WIFI), est notamment exploit pour :
changer des messages avec des utilisateurs distants via le courrier
lectronique se connecter distance sur un serveur via slogin changer
des fichiers avec une machine distante naviguer sur les serveurs
web du rseau
2.4.1 Courrier lectroniqueLenvoi et la rception de messages par
courrier lectronique seffectuent laide dunprogramme de gestion du
courrier. Plusieurs clients de courrier en mode texte, ont
tdvelopps, parmi lesquels mail, pine et alpine. Dautres outils
permettent de grerle courrier en mode texte, comme lditeur emacs.
Mais les clients en mode graphiquecomme par exemple thunderbird
sont maintenant plus populaires. Enfin, certains sitesdisposent dun
service de webmail (par exemple https://webmail.etu.upmc.fr)
quipermet daccder via un simple navigateur sa bote aux lettres
personnelle aprs au-thentification.La forme complte dune adresse de
messagerie lectronique est en gnral 21prenom.nom
@domaine_internetExemples dadresses lectroniques
:[email protected]@upmc.frAdresse
lectronique officielle des tudiants lUPMC : Prenom.Nom
@etu.upmc.fr.
Lutilitaire mail
La commande mail fonctionne avec une interface ligne trs sobre
22 et nest pratique-ment plus utilise que par des procdures
automatiques. Excute seule (sans paramtre),cette commande affiche
la liste des messages prsents dans la bote aux lettres de
luti-lisateur 23, suivie dune marque dinvite (& ou ?) pour
indiquer que des requtes sontattendues. Parmi ces requtes,
signalons les plus usites : ? donne la liste des requtes
disponibles et leur description rapide. n (next) passe au message
suivant t liste de numros de messages affiche ces messages h liste
de numros de messages affiche les enttes de ces messages s fichier
sauvegarde le message courant dans un fichier r rpond lexpditeur du
message courant (R pour rpondre aussi aux autres
destinataires) q met jour la bote aux lettres (les messages lus
sont dplacs dans le fichier de
type bote aux lettres nomm mbox) et sort de mail x ferme la bote
aux lettres sans la modifier et sort de mail
Pour envoyer un message, il faut passer ladresse des
destinataires en paramtre de lacommande :mail
adresses_des_destinataireso adresses_des_destinataires reprsente la
liste des adresses email des destina-taires, spares par des
virgules, sans espace 24.21. Supprimer les signes diacritiques
(accents, cdille, ...) ventuels dans les noms et prnoms et
utiliser
le tiret - pour les noms ou prnoms composs.22. Cest dire sans
gestion de curseur par les flches.23. sauf si la bote aux lettres
est vide, lancer alors mail -f.24. Il sagit, encore une fois, que
le shell considre la liste des destinataires comme un seul mot.
12 v.958 20142015
https://webmail.etu.upmc.fr
-
UPMC M1 : MNI Chapitre 2. Session Unix, rseau
Une fois la commande lance, le programme mail demande le sujet
du message. Il se placeensuite en mode entre, en attente de la
saisie du corps du message. Pour indiquer la findu corps du
message, il faut saisir une ligne rduite un point . en premire
colonne.Apparat alors linvite Cc : (Carbon Copy) qui demande les
adresses des destinatairesventuels qui lon peut envoyer une copie
du message.Il est galement possible de saisir grce un diteur de
texte le corps du message dans unfichier message.txt, par exemple
puis denvoyer ensuite le fichier par mail laide dela commande :mail
adresses_des_destinataires < message.txtLoption -s permet par
ailleurs de prciser le sujet 25 du mail :mail -s "sujet du message"
adresses_des_destinataires < message.txtLoption -f bote permet
de spcifier un fichier de bote aux lettres particulier etmail -f
empche la sortie immdiate dans le cas o la bote est vide.
Les utilitaires pine et alpine
Lutilitaire pine (Program for Internet News and Email) possde
une interface pleine pageen mode texte permettant une navigation
dans la hirarchie des menus. En dehors dumenu, pine affiche une ou
deux lignes dcrivant les fonctions accessibles par la
frappesimultane de la combinaison touche contrle et dune
lettre-clef 26. Il prsente une aidecontextuelle en ligne et des
fonctions volues, parmi lesquelles le tri des messages sui-vant de
nombreux critres, la gestion dun annuaire, de botes aux lettres
multiples, lapossibilit dchanger des fichiers attachs, ... Enfin,
pine est configurable la fois auniveau du serveur mais aussi de
chaque utilisateur (menu Setup). Le dveloppement depine a t arrt
pour laisser place alpine dvelopp sous une autre licence.
2.4.2 Connexion distance via sloginSi un utilisateur est connect
sur une machine localhost qualifie de locale, et silpossde un
compte sur une machine distante dist_host dans le domaine 27 domain
dontlaccs est autoris, il peut sy connecter grce la commande
scurise par cryptageslogin. Le mcanisme dauthentification sur la
machine distante peut exiger une saisiedu mot de passe ou sappuyer
sur un change de clefs.
syntaxeslogin user @dist_host.domain
Plus gnralement, il est possible de passer des commandes sur la
machine distante grce la commande 28 :ssh user @dist_host.domain
dist_cmd
2.4.3 Transfert de fichiers distance via scp et sftpLutilisateur
peut changer des fichiers personnels entre deux machines, sans
ouvrir desession sur la machine distante, via la commande scp,
selon une syntaxe proche de celle decp, en prfixant le chemin daccs
des fichiers distants par user @dist_host.domain :(le rpertoire par
dfaut est alors le rpertoire daccueil de lutilisateur distant).
Lemcanisme dauthentification est le mme quavec slogin, et les
changes sont aussiscuriss par cryptage.
25. Le sujet ne doit constituer quun seul mot au sens du shell ;
cest pourquoi il doit tre encadrpar des apostrophes simples, quote
(') ou doubles, double quote (") sil comporte des blancs (cf.
11.2.4,p. 83).26. Attention, certaines actions sont dclenches
immdiatement par ces touches, sans attendre de
confirmation.27. Par exemple dsi.upmc.fr dsigne le
sous-sous-domaine de la dsi inclus dans le sous-domaine de
lUniversit Pierre et Marie Curie, lui mme appartenant au domaine
gographique fr.28. Bien noter que le shell local interprtera les
caractres spciaux non protgs de la commande ; si on
souhaite que ceux-ci ne soient interprts que par le shell
distant, il faut les protger soit individuellementpar un \ , soit
par des dlimiteurs de protection faible " ou forte ' (cf. 11.2.4,
p. 83).
20142015 v.958 13
-
Chapitre 2. Session Unix, rseau UPMC M1 : MNI
syntaxescp [[user1@]host1:]file1 [[user2@]host2:]file2
scp file1 [user2@]host2:file2 local vers distantscp
[user1@]host1:file1 file2 distant vers localLa commande scp, qui
demande le mot de passe chaque invocation, est mal adaptepour
transfrer un nombre important de fichiers. On lui prfre sftp qui
permet douvriravec une seule authentification une session de
transfert de fichiers pendant laquelle il estpossible de lister les
fichiers distants, de se dplacer dans la hirarchie et de
deffectuerdes transferts dans les deux sens. Un utilisateur connect
sur une machine localhostqualifie de locale, et qui possde un
compte sur une machine distante dist_host peutaussi changer des
fichiers personnels entre ces deux machines en ouvrant une
sessionsftp (secure f ile tranfer protocol)
syntaxesftp user @dist_host.domain
Aprs lauthentification sur le serveur distant, lutilisateur peut
importer des fichiersdistants grce la requte get dist_file , ou
exporter des fichiers vers la machinedistante par put local_file ;
dautres requtes telles que ls, cd, pwd sadressent auserveur distant
alors que lcd (local change directory) concerne la machine locale ;
exitou quit permet de terminer la session sftp.
2.4.4 NavigateurLes explorateurs Web (lynx, mozilla-firefox,
opera, konqueror, amaya, ...) per-mettent daccder des ressources
dinformations distribues sur le rseau Internet.Cet accs se fait par
lintermdiaire de diffrents protocoles, comme ftp (File
TransferProtocol), http (Hypertext Transport Protocol), ou sa
version https scurise par cryp-tage.Les ressources fournies travers
le protocole http sont appeles pages Web. Elles sontlocalises grce
une adresse dite URL (Universal Resource Locator).
Exemples dURL :file:/home/lefrere/M1/Doc/Unix/ sur la machine
localehttp://www.formation.jussieu.fr/ars/2011-2012/UNIX/cours/http://www.w3.org/TR/xhtml1
Autres outils La commande wget est trs efficace pour tlcharger
des fichiers ou(rcursivement) des hirarchies de fichiers depuis un
serveur (ftp ou http) ds que lonconnait leur URL, qui peut tre
obtenue via un navigateur en utilisant loption copierladresse du
lien obtenue avec le clic droit de la souris. En effet wget est
outil noninteractif trs robuste qui peut sadapter des liaisons de
faible dbit et grer lui-mmeles reprises de transfert en cas
dchec.Exemple 29 de tlchargement de lintroduction linux de Machtelt
Garrels :wget
"http://tldp.org/LDP/intro-linux/intro-linux.pdf"Noter que le
systme de gestion de paquets RPM de la distribution Red-Hat utilise
unautre outil de transfert en ligne de commande, curl qui gre de
nombreux protocoles(ftp, http, https, ...).
29. Ne pas oublier de protger par des guillemets doubles les
caractres spciaux comme le : (cf. 11.4.4, p. 85) de linterprtation
par le shell (cf. 11.2.4, p. 83).
14 v.958 20142015
file:/home/lefrere/M1/Doc/Unix/http://www.formation.jussieu.fr/ars/2011-2012/UNIX/cours/http://www.w3.org/TR/xhtml1
-
Chapitre 3
Hirarchie de fichiers
3.1 Arborescence des fichiersSous unix, lensemble des fichiers
est structur sous la forme dune hirarchie de rper-toires et de
fichiers constituant un arbre unique. Un exemple partiel
darborescence estdonn dans la figure 3.1.
tmplib
group_b
user_a1 user_a2
dir_1 dir_1
user_b1
file1 file2
cat1man1
mangroup_a
usr
ls
rpertoire
fichier ordinaire
Lgende
devbin etc home
/
Figure 3.1 Arborescence des fichiers unix
sa racine (root) est le rpertoire qui contient tous les autres
fichiers ; on la dsignepar /
ses nuds sont des sous-rpertoires : /bin pour les excutables,
/dev pour lespriphriques, /etc pour le systme, /home pour les
utilisateurs, /tmp pour lesfichiers temporaires, /usr pour les
outils, ... qui eux-mmes contiennent des fi-chiers (feuilles de
larbre) ou dautres sous-rpertoires (par exemple les
groupesdutilisateurs) qui...
ses feuilles sont les fichiers.
Remarques : Larbre unique dunix est purement logique ; plusieurs
priphriquesamovibles (disques, clefs-USB, ...) peuvent y tre monts
temporairement : cetteopration de montage peut tre considre comme
la greffe de la branche de lahirarchie de fichiers du priphrique
amovible en un point de montage (par exemple/media/cdrom,
/media/removable) de larbre unix.
15
-
Chapitre 3. Hirarchie de fichiers UPMC M1 : MNI
Sous windows, le sparateur est la contre-oblique \ (antislash) ;
les priphriques sontdsigns par une lettre prfixe suivie de :, par
exemple C:\ ou D:\ qui constituentchacun un arbre.
Rpertoire daccueil : Au sein de cette hirarchie, chaque
utilisateur se voit attribuerpar ladministrateur (cf. 2.1.1, p. 4)
un rpertoire daccueil (home directory) personnel,do part une
branche de larbre qui contient les sous-rpertoires et fichiers
ordinaires quilui appartiennent 1. La variable denvironnement HOME
contient le chemin absolu daccsau rpertoire daccueil (cf. 11.1.4,
p. 80).
3.1.1 Chemins daccs des fichiers et rpertoiresTout fichier unix
peut tre rfrenc par son chemin daccs (path), cest--dire la
descrip-tion du chemin quil faut parcourir dans larborescence
partir dun certain rpertoirepour atteindre le fichier en question.
Le chemin est spcifi par les noms des rpertoiresspars par des / et
suivis du nom du fichier.
Rpertoire de travail :Pour simplifier la dsignation des
fichiers, on introduit la notion de rpertoire courant oude travail
(working directory) dans lequel les fichiers peuvent tre nomms sans
prciserde chemin. Le rpertoire courant est dsign par un point . .
La commande pwdpermet dafficher le chemin absolu du rpertoire de
travail ; le rpertoire de travail peutvoluer en cours de session
grce la commande interne cd (cf. 2.3.10, p. 11). Lorsde louverture
de la session unix, le rpertoire de travail est par dfaut le
rpertoiredaccueil de lutilisateur.Ainsi, pour dsigner un fichier,
on peut indiquer, suivant que lon part de la racine oudu rpertoire
courant : un chemin absolu : il comporte la liste complte des
rpertoires traverss depuis
la racine, et commence toujours par / 2Exemples :
/usr/man/man1/ls.1, /home/group_a/user_a1, (cf. figure 3.1, p.
15)
un chemin relatif : il comporte la liste des rpertoires
parcourir depuis lerpertoire courant jusquau fichier ou rpertoire
choisi. Il ne commence jamais par/ (on peut dire quil commence par
. ) et doit passer par un nud commun labranche de dpart (rpertoire
courant) et la branche darrive. La notation .. permet de remonter
dun niveau dans la hirarchie, cest--dire au rpertoire pre.Exemples,
partant de /home/group_a/user_a1 :dir_1, ../, ../user_a2,
../../group_b/user_b1, (cf. figure 3.1, p. 15)
Raccourcis pour les rpertoires daccueil
Enfin, le symbole ~ permet de rfrencer le rpertoire daccueil dun
utilisateurquelconque 3 sous la forme ~user . Il se comporte donc
comme un raccourci dun cheminabsolu. Par exemple, ~user_a2 est
quivalent /home/group_a/user_a2/. Enfin ~ sans nom dutilisateur
dsigne votre propre rpertoire daccueil 4.
3.1.2 Visualisation dune branche avec treeLa commande tree
permet de reprsenter une branche de la hirarchie de fichiers.
Plu-
1. En gnral, un utilisateur na pas le droit de crer de fichier
en dehors de cette branche du systmede fichiers unix, sauf dans le
rpertoire /tmp (cf. 3.1.4, p. 21).
2. Si le chemin commence par ~, cest un raccourci de chemin
absolu qui, une fois dvelopp par leshell, dbutera par /
3. Ce qui suit ~ doit imprativement tre un nom dutilisateur,
dont le rpertoire daccueil estunique, mais surtout pas un nom
quelconque de fichier ou de sous-rpertoire dont il peut exister
plusieursversions dans des rpertoires diffrents.
4. Donc ~ est quivalent ${HOME}, cf. 11.1.4, p. 80
16 v.958 20142015
-
UPMC M1 : MNI Chapitre 3. Hirarchie de fichiers
sieurs options y ont le mme sens que dans ls : en particulier,
-F ajoute un / lafin des noms de rpertoires, -a permet dafficher
les fichiers cachs. Loption -d permetde nafficher que les
rpertoires.Par exemple, avec comme rpertoire detravail le rpertoire
/home de larbrede la figure 3.1, p. 15, la commandetree -F .
affiche :.|-- groupe_a/| |-- user_a1/| | |-- dir_1/| | `-- file1|
`-- user_a2/`-- groupe_b/
|-- user_b1/| |-- dir_1/| `-- file1`-- user_b2/
8 directories, 2 files
Loption -f (full) permet dafficher lechemin complet partir du
rpertoiredonn en argument de la commande.tree -F -f . affiche :.|--
./groupe_a/| |-- ./groupe_a/user_a1/| | |--
./groupe_a/user_a1/dir_1/| | `-- ./groupe_a/user_a1/file1| `--
./groupe_a/user_a2/`-- ./groupe_b/
|-- ./groupe_b/user_b1/| |-- ./groupe_b/user_b1/dir_1/| `--
./groupe_b/user_b1/file1`-- ./groupe_b/user_b2/
8 directories, 2 files
3.1.3 Changement de rpertoire de travail : exemples
La commande interne cd (change directory) permet de changer de
rpertoire de travail.Sans paramtre, cd permet daccder au rpertoire
daccueil, alors que cd rep permetdaccder un rpertoire quelconque
spcifi par son chemin (absolu ou relatif).Les exemples illustrs
ci-aprs partent du rpertoire courant /home/group_a/user_a1.La
commande cd. ne modifie pas le rpertoire courant car . dsigne le
rpertoirecourant.
tmplib
group_b
user_a2
dir_1 dir_1
user_b1
file1 file2
cat1man1
mangroup_a
usr
ls
user_a1cd .
devbin etc home
/
Figure 3.2 La commande cd . laisse dans le rpertoire
courant/home/group_a/user_a1.
20142015 v.958 17
-
Chapitre 3. Hirarchie de fichiers UPMC M1 : MNI
tmplib
group_b
user_a2
dir_1 dir_1
user_b1
file1 file2
cat1man1
mangroup_a
usr
ls
user_a1
cd ..
devbin etc home
/
Figure 3.3 Partant de user_a1, la commande cd .. dplace dans le
rpertoire pre,soit group_a.
tmplib
group_b
user_a2
dir_1 dir_1
user_b1
file1 file2
cat1man1
mangroup_a
usr
ls
user_a1
devbin etc home
/
../ user_a2
Figure 3.4 Partant de user_a1, la commande cd ../user_a2 dplace
dans le rper-toire user_a2
18 v.958 20142015
-
UPMC M1 : MNI Chapitre 3. Hirarchie de fichiers
tmplib
group_b
user_a2
dir_1 dir_1
user_b1
file1 file2
cat1man1
mangroup_a
usr
ls
user_a1
devbin etc home
/
../
../
user_b1
group_b
Figure 3.5 Partant de user_a1, la commande cd
../../group_b/user_b1 dplacedans le rpertoire user_b1.
tmplib
group_b
user_a2
dir_1 dir_1
user_b1
file1 file2
cat1man1
mangroup_a
usr
ls
user_a1
devbin etc home
user_b1
group_b
/
home
Figure 3.6 La commande cd /home/group_b/user_b1 fait du
rpertoire user_b1 lerpertoire courant quel que soit le rpertoire de
dpart car elle utilise un chemin absolu.
20142015 v.958 19
-
Chapitre 3. Hirarchie de fichiers UPMC M1 : MNI
3.1.4 Attributs des fichiersdroits daccsAffichage des droits
avec ls -l
La commande ls -l permet dafficher les attributs des fichiers,
dans lordre suivant :type et droits daccs, nombre de liens, nom du
propritaire, nom du groupe (cf. 2.2.4,p. 8), taille et
date.-rwxr-xr-x 1 p6m1mni p6pfal 1346 Oct 08 18:24 MNI.profile
Le type et les droits daccs sont affichs laide de 10 caractres
:1. Le premier caractre reprsente le type du fichier :
- pour un fichier ordinaire,l pour un lien (link),d pour un
rpertoire (directory),...
2. Les neuf suivants doivent tre interprts par groupes de trois
:les trois premiers reprsentent les droits du propritaire symbolis
par u (user),les trois suivants reprsentent les droits du groupe
auquel il appartient, g(group),les trois derniers reprsentent les
droits des autres utilisateurs o (others 5).
Pour chaque public 6, trois droits principaux peuvent tre
accords, dans lordre :lecture r (read),criture w (write),excution x
(execute).
Si un droit nest pas accord, le signe moins - vient remplacer r,
w ou x.
type propritaire groupe autres-/d/l user group others- r w x r w
x r w x
Droits dendossement
la place de lattribut x sur un fichier excutable 7, on peut
positionner la permissions : celui qui excute le fichier acquiert
alors temporairement les droits du propritaire 8(set uid bit), ou
du groupe (set gid bit) lors de lexcution du fichier.
Exemple : droits sur le fichier /etc/passwd Le fichier
/etc/passwd 9 contient lesmots de passe cods de tous les
utilisateurs. Son propritaire est ladministrateur dusystme (root).
Il ne peut pas accorder de permission permanente en criture sur
cefichier aux utilisateurs.-rw-r--r-- 1 root root 1199 Sep 6 17:16
/etc/passwdMais chaque utilisateur doit pouvoir modifier son mot de
passe grce la commandepasswd dont le code est situ dans le fichier
excutable /usr/bin/passwd.Lattribution de la permission s ce
fichier, dont le propritaire est ladministrateur,permet daccorder
temporairement les droits du super-utilisateur chaque
utilisateurauthentifi lors de lexcution de la commande passwd : en
particulier, cela lui permetdcrire son mot de passe cod dans le
fichier /etc/passwd.-r-s--x--x 1 root root 16084 Apr 27 23:37
/usr/bin/passwd
5. Ne pas confondre avec owner.6. Noter que si un droit est
refus au titre du groupe par exemple, un utilisateur ne peut pas
invoquer
un droit sur une entit plus vaste (les autres ici) pour accder
un fichier.7. Pour des raisons de scurit, certaines implmentations
dunix nautorisent pas lattribut s pour
les shell-scripts.8. On qualifie alors deffective user le
propritaire du fichier excut, par rapport au real user qui
lance la commande. La permission s est qualifie de droit
dendossement.9. Dans les systmes scuriss, les mots de passe cods
sont en fait stocks dans un fichier
/etc/shadow, qui nest plus accessible qu ladministrateur y
compris en lecture.
20 v.958 20142015
-
UPMC M1 : MNI Chapitre 3. Hirarchie de fichiers
Restriction au propritaire du droit de destruction
Notons aussi quil est possible de placer sur un rpertoire un
droit qui interdit de dtruireun fichier dont on nest pas
propritaire. Cette restriction est en gnral impose sur lerpertoire
/tmp. Elle est reprsente par t la place de x en dernire position
:drwxrwxrwt 25 root root 4096 2013-09-15 22:02 /tmp/
Cas des liens symboliques
Noter que les liens symboliques ont tous leurs droits ouverts :
cela implique quils nelimitent pas les droits qui sont en fait
ports par la cible du lien.
Cas des rpertoires
Rappelons que laffichage des attributs dun rpertoire (et non des
fichiers quil contient)se fait avec la commande ls -ld. La
signification des droits sur les rpertoires est un Bpeu particulire
:w permet dajouter, de renommer, de supprimer des fichiers dans le
rpertoire (mais ce
droit nest pas ncessaire pour modifier le contenu dun fichier)r
ncessaire pour afficher la liste des fichiers du rpertoirex permet
dagir sur les fichiers du rpertoire, donc de le traverser, den
faire son rper-
toire de travail (mme si on ne peut pas afficher la liste de son
contenu)Si on souhaite permettre aux autres dexplorer un rpertoire,
il faut donc leur accorderles droits rx.Noter que la permission x
sur le rpertoire est ncessaire pour afficher les attributs
desfichiers quil contient, notamment avec ls -l (cf. 2.3.1, p. 9),
alors que cest le droit r 10qui permet dafficher la liste sans les
attributs.
Modification des droits avec chmod
Seul le propritaire 11 dun fichier peut modifier ses droits
daccs par la commande :chmod mode fichiero mode reprsente une
concatnation de trois lments :
le ou les publics concerns : u, g, o ou toute combinaison ou
enfin a (all soit ugo),suivi de lopration raliser :
= (dfinition, lexclusion de tout autre droit pour un public
donn),+ (ajout),- (suppression),
suivie des droits considrs r, w, x ou une concatnation des ces
droits.Ainsi, la commande chmod g+x toto donne au groupe, en plus
des droits daccs actuels,celui dexcuter le fichier toto. On peut
enfin fournir une liste de modes selon la syntaxeprcdente, en
sparant les lments par des virgules, sans espace.Pour chacun des
trois publics, les droits daccs peuvent aussi tre reprsents de
faonnumrique par la valeur exprime en base huit selon les poids des
trois droits suivants :r=4, w=2, x=1. Les droits sont donc
reprsents par trois 12 chiffres en octal.
Ainsi les droits dun fichier ouvert toutesles oprations pour
tous sauf celle dcriturerserve au propritaire seront caractrisspar
le mode numrique 755.
public u g osymbolique rwx r-x r-xbinaire 111 101 101octal 7 5
5
10. Dans le cas o le rpertoire comporte le droit r, mais pas x,
la commande ls -F ou avec colorisation,qui fait appel aux attributs
pour dcorer le listing, va provoquer un message derreur, mais
afficheracependant la liste. Si la commande ls est un alias
imposant une de ces options, il faut lancer la commandenative via
\ls pour afficher la liste sans provoquer derreur.11. ainsi que
root, ladministrateur de la machine.12. On doit ajouter gauche un
autre chiffre octal (0 zro par dfaut) si on prend en compte le
suid
bit s (poids 4), le guid bit (poids 2) et le sticky bit t ou le
bit affect aux rpertoires restreignant lesdestructions aux fichiers
dont on est propritaire (poids 1).
20142015 v.958 21
-
Chapitre 3. Hirarchie de fichiers UPMC M1 : MNI
Exemple : aprs chmod 600 f1, seul son propritaire peut lire et
crire sur f1. Cettecommande quivaut chmod u=rw,go= f1 en
symbolique.
Droits par dfaut : la commande interne umask
Les droits par dfaut attribus lors de la cration dun fichier
dpendent de loutil decration 13, mais ils ne peuvent pas tre plus
tendus que ceux dfinis par un masquedont chaque bit 1 bloque
lattribution du droit qui se situerait sa position. La valeurde ce
masque peut tre affiche par la commande interne (cf. 15.1.1, p.
100) umask sansargument. Elle peut tre modifie 14 par umask mode .
Loption -S de umask permet dex-primer ce masque en termes
symboliques. Le masque minimal consiste bloquer le droitdcriture
sauf pour le propritaire des fichiers, cest dire umask -S
u=rwx,g=rx,o=rx,soit umask 022. Mais une valeur couramment adopte
est umask 027, qui bloque tousles droits en dehors du groupe.
Cependant, une fois le fichier cr, la commande chmod(cf. 3.1.4, p.
21) permet de modifier ses droits indpendamment du masque
courant.Pour quun changement de valeur du masque ne soit pas oubli
en fin de session, il doittre effectu dans les fichiers
dinitialisation du shell.
Cas des systmes de fichiers non unix Le systme de droits que
nous venons dedcrire est propre au systme unix. Si on effectue le
montage dun disque externe ouBdune clef USB initialement sous
windows, il est probable quils soient vus sous unixavec tous les
droits ouverts, y compris le droit dexcution pour des fichiers o il
naaucun sens.
3.2 Autres commandes de gestion des fichiers
3.2.1 Rechercher rcursivement des fichiers avec findLa commande
find est une commande trs puissante qui permet de rechercher dans
lahirarchie des fichiers selon de nombreux critres (nom, date,
taille, droits, type, ...) quipeuvent tre combins entre eux, et
dappliquer des commandes aux fichiers slectionns.Elle rpond la
syntaxe suivante :
syntaxefind rpertoire critre(s) action
La recherche seffectue rcursivement dans toute la branche 15
situe sous le rpertoireindiqu en premier argument et les chemins
affichs pour les fichiers trouvs partironttous de rpertoire .
Critres de recherche de find
Les critres de slection les plus courants sont :-name motif nom
selon un motif (-iname pour ignorer la casse)-size entier [ckM]
taille (+/- entier plus grand/plus petit que lentier spcifi)
unit : octet (c), kilo-octet (k), mga-octet (M)-newer fichier
plus rcent quun fichier-type T de type donn (f=ordinaire,
d=rpertoire, l=lien symbolique)
13. Par exemple, un fichier cr par un diteur de texte, nest pas
excutable par dfaut : sil sagitdun fichier de commandes (cf. 12.1,
p. 86), il faut le rendre excutable par la commande chmod +x.En
revanche, la compilation et ldition de lien dun fichier source
fortran ou C produit un fichiera.out immdiatement excutable sans
avoir utiliser chmod... sauf si le masque courant na pas
permisdattribuer ces droits !14. Le changement de masque ne modifie
en rien les droits des fichiers existants. Il limite seulement
les droits pour les fichiers crs ultrieurement.15. Il est
possible de limiter la profondeur dexploration de find dans les
sous-rpertoires par loption
-maxdepth suivie dun nombre de niveaux.
22 v.958 20142015
-
UPMC M1 : MNI Chapitre 3. Hirarchie de fichiers
Actions sur les fichiers trouvs
Les actions les plus usites que find peut lancer sont :-print
affichage de la liste des fichiers (un par ligne avec leur chemin
relatif
ou absolu selon le choix fait pour le premier argument de la
commande)-ls affichage de la liste des fichiers avec leurs
attributs
(comme par la commande ls -dils 16)-exec cmd excution de la
commande unix cmd pour chacun des fichiers slection-
ns (syntaxe dlicate)Lusage le plus simple de cette commande est
de rechercher dans une partie de larbo-rescence les fichiers
portant un nom donn :find . -name x.c -print (cf. fig. 3.7, p.
23)affiche la liste de tous les fichiers nomms x.c dans la branche
situe sous le rpertoirecourant.
rep1 x.c totorep2 rep1
x.c reprep x.c y.c
repBz.c
dir
repAfichier
ordinaire
rpertoire
Lgende
Figure 3.7 Recherche des fichiers nomms x.c partir du rpertoire
dir avec lacommande find . -name x.c -print si dir est le rpertoire
de travail. Trois fichierssont trouvs et leurs chemins affichs
partir du rpertoire de travail sous la forme./repA/x.c par exemple.
Si le rpertoire de travail tait repA, pour rechercher aussi partir
de dir, il faudrait lancer la commande find ../ -name x.c
-print.
Interactions avec le shell
Pour rechercher des fichiers dont le nom correspond un motif
gnrique, il faut protger Bles caractres spciaux du motif comme * de
linterprtation par le shell (cf. 11.2.4, p. 83),qui se ferait sinon
dans le rpertoire de travail quel que soit le rpertoire de
recherche.La commande suivante recherche partir du rpertoire
courant, tous les fichiers dont lenom se termine par .c (cf. fig.
3.9, p. 24 et fig. 3.10, p. 25).find . -name '*.c' -printPour
rechercher chez tous les utilisateurs partir du rpertoire /home,
tous les fichiersdont le nom se termine par le suffixe .f90, il est
prfrable de se dbarasser des messagesderreur qui surviennent cause
des permissions daccs restreintes, en redirigeant lasortie derreur
vers un fichier poubelle .find /home -name '*.f90' -print
2>/dev/null (cf. 10.5.1, p. 76)16. Loption -d est ici ncessaire
pour afficher les attributs des rpertoires et non celles des
fichiers
quil contiennent (cf. 2.3.1, p. 9).
20142015 v.958 23
-
Chapitre 3. Hirarchie de fichiers UPMC M1 : MNI
rep1 x.c totorep2 rep1
x.c reprep x.c y.c
repBrepA
dir
z.cfichier
ordinaire
rpertoire
Lgende
Figure 3.8 Si dir est le rpertoire de travail, la commande qui
permet de rechercher lesfichiers nomms x.c partir du sous-rpertoire
repA est find repA -name x.c -printSeulement deux fichiers sont
trouvs ./repA/x.c et ./repA/rep1/x.c
rep1 x.c totorep2 rep1
x.c reprep y.c
repBz.crepA
dir
fichier
ordinaire
rpertoire
Lgende
x.c
Figure 3.9 Dans la commande find . -name *.c -print, le caractre
* est inter-prt (dans le rpertoire courant) par le shell et *.c est
remplac par z.c avant dtrepass find. Seul le fichier z.c est donc
trouv dans la branche dir (cf. mthode cor-recte fig. 3.10, p. 25).
Noter que si, sans changer de rpertoire de travail, la recherche
sefaisait par find repA -name *.c -print, on rechercherait encore
un fichier z.c, maissous repA : on ne trouverait alors aucun
fichier ce nom.
24 v.958 20142015
-
UPMC M1 : MNI Chapitre 3. Hirarchie de fichiers
rep1 x.c totorep2 rep1
x.c reprep x.c y.c
fichier
ordinaire
rpertoire
Lgende
repB
dir
repA z.c
Figure 3.10 Pour viter linterprtation du caractre * par le shell
(cf. fig. 3.9, p. 24),on le protge en lentourant par des . Ainsi
find repA -name *.c -print permetde trouver les 5 fichiers de
suffixe .c de la branche dir.
Exemples
find /tmp -size +1000c -size -2000c -printaffiche la liste des
fichiers de taille entre 1000 et 2000 octets sous /tmpfind . -name
a.out -exec rm {} \;recherche les fichiers a.out sous le rpertoire
courant et les supprime :
{} dsigne le nom de chaque fichier trouv (avec son chemin
daccs)\; indique la fin de la commande 17 appliquer chaque fichier.
Bien noter quin-diquer la fin de la commande dclenche par exec est
indispensable car on peutpar exemple faire suivre la commande find
dun tube.
find ~/src -name "*.c" -exec grep -l math {} \; | wc -lpermet de
compter le nombre de fichiers de suffixe .c qui contiennent la
chane mathdans le rpertoire src (situ dans le rpertoire daccueil de
lutilisateur).
3.2.2 Archiver des arborescences de fichiers avec tarLa commande
tar 18 est utilise pour archiver des hirarchies de fichiers des
fins desauvegarde ou de transfert entre deux machines (cf. par
exemple Fig. 3.11, 3.12 et 3.13).
17. Il faut protger le caractre ; de linterprtation par le shell
o est lance la commande find : cestle rle de la contre-oblique, qui
sera consomme par le shell avant interprtation du find (cf.
11.2.4,p. 83).18. Le nom de cette commande signifie tape archive,
cest--dire sauvegarde sur bande magntique. Elle
prsente dailleurs des similitudes avec la commande ar de gestion
des bibliothques. Avec lvolutiondes ressources disque et lusage du
rseau, les fichiers darchives peuvent maintenant tre stocks
surdisque et il faut alors les nommer, do loption -f.
20142015 v.958 25
-
Chapitre 3. Hirarchie de fichiers UPMC M1 : MNI
ua1 /tmp/f.tar
~user1/f.tar
tar cf
tar xf
gp_b/ f.targp_a/
home/
/
tmp/
ua1/
dir2/ file1
d21/f1_1
dir1/
ua0/
cd ~/..
tmp/
user1/user0/
/
home/
f.tarrepB/
ua1/
dir2/ file1
d21/f1_1
dir1/
repA/
cd ~user1/repB/
transfert de f.tar
machines
entre les 2
Figure 3.11 Recopie dune branche via tar : cration de larchive
f.tar de la branche(cf. Fig. 3.12, p. 26), transfert de larchive et
extraction sous repB (cf. Fig. 3.13, p. 27)
ua1 /tmp/f.tartar cf
gp_b/ f.targp_a/
home/
/
tmp/
ua1/
dir2/ file1
d21/f1_1
dir1/
ua0/
cd ~/..
Figure 3.12 Cration(sous /tmp) de larchivef.tar de la branche
delutilisateur ua1 :1) cd ~/..2) tar -cf /tmp/f.tar ua1Noter que f
est la der-nire option et doit tresuivie du nom du fichierdarchive
avec son cheminet que le dernier argu-ment doit tre un
cheminrelatif.
26 v.958 20142015
-
UPMC M1 : MNI Chapitre 3. Hirarchie de fichiers
~user1/f.tar tar xf
tmp/
user0/
repB/repA/
/
home/
f.tar
ua1/
dir2/ file1
d21/f1_1
dir1/
user1/
cd ~user1/repB/Figure 3.13 Restauration debranche partir de
larchive :1) cd ~/repB/2) tar -xf ~/f.tarNoter que la restauration
sefait partir du rpertoire cou-rant.
Syntaxe de la commande tar
tar options [archive] rpertoire pour crer larchive de la branche
rpertoiretar options [archive] pour exploiter larchive (liste ou
restauration)
Principales actions possibles 19 (une et une seule par commande)
:-c (create) cration de larchive partir de larborescence (cf. fig.
3.12) ;-t (list) liste des fichiers tels quils seront extraits ;-x
(extract) extraction des fichiers pour restaurer larborescence (cf.
fig. 3.13).
Autres options combinables :-f archive (f ile) option argument
pratiquement obligatoire qui permet de prciser
le nom du fichier darchive utilis 20-v (verbose) affiche des
informations complmentaires-z (gzip) compression ( la cration) ou
dcompression (lors de la lecture)
la vole 21 du fichier darchive
Exemple de duplication dun compte
cration : On se place gnralement juste au-dessus de la branche
archiver lors de la cration pour que la restauration puisse se
faire dans un seul rpertoire, facile dplacer en cas derreur.cd
~user1/../ ; tar -cvf /tmp/archive.tar user1
19. Noter que tar admet aussi une syntaxe plus ancienne o les
actions ne sont pas prcdes par lecaractre -, introducteur doptions
: tar cvf archive.tar rep.20. Sans loption f, larchive est stocke
sur une bande magntique. Si larchive est crite sur la sortie
standard, ou lue sur lentre standard, on