+ All Categories
Home > Documents > poly-unix.pdf

poly-unix.pdf

Date post: 19-Nov-2015
Category:
Upload: marcus-adomey
View: 30 times
Download: 5 times
Share this document with a friend
Popular Tags:
137
Université Pierre et Marie Curie Paris VI Master de Sciences et Technologie : — Mention Physique et Applications — Mention Sciences de l’Univers, Environnement, Écologie Méthodes numériques et informatiques UE 4P009 Unix et programmation L’environnement Unix [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] avec des contributions de : Frédéric Bernardo Albert Hertzog Frédéric Meynadier 2014–2015
Transcript
  • 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


Recommended