Post

CM6 Unix

Télécharger le CM6 Unix en pdf

Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126

Page 1 : INFORMATIQUE 3V I . U N I X & S C R I P T S H E L LEva ANSERMIN & Renaud VERIN & Romuald GRIGNONv1.1

page 1

Page 2 : I. Contexte2E.ANSERMIN R.VERIN R.GRIGNON

page 2

Page 3 : Contexte• “Système d’exploitation” : logiciel permettant de faire le lien entre le matériel de la machine et les applications3UTILISATEURAPPLICATIONSSYSTEME D’EXPLOITATIONMATERIELE.ANSERMIN R.VERIN R.GRIGNON

page 3

Page 4 : ContexteLe système d’exploitation permet de gérer plusieurs tâches nécessaires au bon fonctionnement de l’ordinateur :4Interface utilisateur• Interprète de commandes• Interface graphiqueGestion des périphériques• PilotesGestion de la mémoire secondaire• Mémoire non volatile disque dur, clef USB, … • Structure de stockage des donnéesfichiersGestion de la mémoire vive• Mémoire vive RAM• Allocation / Libération / Segmentation• Pour le noyau et pour les autres tâchesNoyau• Gestion des “processus”• Allocation de CPU• Gestion des interruptionsE.ANSERMIN R.VERIN R.GRIGNON

page 4

Page 5 : Contexte•“Distribution” : logiciel complet regroupant un système d’exploitation, des pilotes et des applications5UNIX1969DOS1981SYSTEME 11984WINDOWS 11985LINUX1991MAC OS 91999MAC OS X2000WINDOWS 112021DEBIAN1993UBUNTU 4.102004UBUNTU 22.102022BSD 41991DEBIAN 11.52022MAC OS 12.52022E.ANSERMIN R.VERIN R.GRIGNON

page 5

Page 6 : II. Présentation des concepts6E.ANSERMIN R.VERIN R.GRIGNON

page 6

Page 7 : UNIXSystème d’exploitation•multi-tâches•multi-utilisateurs4 concepts élémentaires :•les fichiers•les droits d’accès•les processus•la communication inter-processus7E.ANSERMIN R.VERIN R.GRIGNON

page 7

Page 8 : UNIXSystème d’exploitation•multi-tâches•multi-utilisateurs4 concepts élémentaires :•les fichiers•les droits d’accès•les processus•la communication inter-processus8E.ANSERMIN R.VERIN R.GRIGNON

page 8

Page 9 : UNIX : les fichiersUnité élémentaire de gestion des ressourcesRéférencé dans un système de fichiers par :•le propriétaire•le groupe d’utilisateurs•les droits d’accès lecture / écriture / exécution•la date de dernière modification•la taille dans la mémoire secondaire•les références des blocs de données dans la mémoire secondaireSous Unix, tout est vu comme un fichier fichier, dossier, raccourci, flux de données entrant ou sortant, …9E.ANSERMIN R.VERIN R.GRIGNON

page 9

Page 10 : UNIX : les fichiersCe n’est pas le fichier en lui-même qui contient les informations décrites précédemmentElles sont stockées dans ce que l’on nomme un inodeinode index of nodeLe fichier est une zone mémoire qui contient seulement le nom du fichier ainsi que le numéro d’inode associéChaque inode possède un numéro uniqueLorsque l’on souhaite afficher le contenu d’un fichier, en réalité, on accède à l’inode correspondant, qui lui-même accède au contenu10E.ANSERMIN R.VERIN R.GRIGNON

page 10

Page 11 : UNIX : les fichiersIllustration d’un fichier dans la mémoire du système11E.ANSERMIN R.VERIN R.GRIGNONINODE1DATA BLOCK 1DATA BLOCK 2DATA BLOCK ... FILE1

page 11

Page 12 : UNIX : les fichiersIl est possible de créer des liens vers des fichiersUn peu à l’image des raccourcis, ces liens permettent d’accéder à du contenu qui est ailleurs dans l’arborescence des fichiersIl existe plusieurs types de liensLes liens symboliques liens souplesLes liens physiques liens durs12E.ANSERMIN R.VERIN R.GRIGNON

page 12

Page 13 : UNIX : les fichiers13E.ANSERMIN R.VERIN R.GRIGNONINODE1DATA BLOCK 1DATA BLOCK 2 FILE1link-SINODE2Liens symboliques : fichier avec son propre inodeSi le fichier cible est supprimé, le lien ne fonctionne plusSchéma de lien symbolique fast

page 13

Page 14 : UNIX : les fichiersLiens symboliques : fichier avec son propre inodeSi le fichier cible est supprimé, le lien ne fonctionne plusSchéma de lien symbolique fast14E.ANSERMIN R.VERIN R.GRIGNONINODE1DATA BLOCK 1FILE1link-SINODE2

page 14

Page 15 : UNIX : les fichiersLiens physiques : fichier avec un lien vers l’inode de la cibleSi le fichier cible est supprimé, le lien fonctionne toujoursSi l’inode n’a plus aucun fichier qui y fait référence, les données seront supprimées de la mémoire secondaire15E.ANSERMIN R.VERIN R.GRIGNONINODE1DATA BLOCK 1FILE1link-H

page 15

Page 16 : UNIX : les dossiersLes fichiers peuvent être regroupés hiérarchiquement dans un répertoire dossierUn dossier est un fichier dont le contenu est la liste des références des fichiers qu’il contientIl a les mêmes propriétés qu’un fichier16/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 16

Page 17 : UNIX : les dossiers/ : répertoire racine root17/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 17

Page 18 : UNIX : les dossiers/bin : commandes de base pour tous les utilisateurs18/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 18

Page 19 : UNIX : les dossiers/dev : fichiers pilotant les périphériques matériels19/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 19

Page 20 : UNIX : les dossiers/etc : fichiers de configuration fichiers de démarrage20/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 20

Page 21 : UNIX : les dossiers/home : fichiers des utilisateurs21/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 21

Page 22 : UNIX : les dossiers/lib : bibliothèques compilées nécessaires pour les binaires dans /bin22/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 22

Page 23 : UNIX : les dossiers/tmp : fichiers de travail temporaires23/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 23

Page 24 : UNIX : les dossiers/usr/include : fichiers d’entête des langages24/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 24

Page 25 : UNIX : les dossiers/usr/bin : commandes complémentaires de l’utilisateur25/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 25

Page 26 : UNIX : les dossiers/var : fichiers divers boîte email, fichiers temporaires, fichiers journaux, …26/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 26

Page 27 : UNIX : les dossiers/home/rgn : dossier personnel de l’utilisateur « rgn »27/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON

page 27

Page 28 : UNIX : les dossiersUn chemin commençant par “ / “ est un chemin absoluTout autre chemin est un chemin relatif par rapport repertoire courantLe dossier racine du disque dur root se nomme “ / “Il existe des noms génériques pour certains dossiers :• dossier home utilisateur: “ “• dossier courant: “ . “• dossier parent: “ .. “• dossier précédent : “ - “28E.ANSERMIN R.VERIN R.GRIGNON

page 28

Page 29 : UNIXSystème d’exploitation•multi-tâches•multi-utilisateurs4 concepts élémentaires :•les fichiers•les droits d’accès•les processus•la communication inter-processus29E.ANSERMIN R.VERIN R.GRIGNON

page 29

Page 30 : UNIX : les droits d’accèsTout fichier possède un identificateur nom :• Le caractère “ / ” n’est pas autorisé• Pas de structure particulière : des noms de fichiers sans suffixe ou sans préfixe sont possibles• Un nom de fichier sans préfixe commençant par un point, suivi par des caractères sera considéré comme un fichier caché qui ne sera pas visible par défaut• Les caractères spéciaux tels que les espaces, ?, &, , …, sont autorisés mais en pratique ils compliquent la manipulation des noms des fichiers 30E.ANSERMIN R.VERIN R.GRIGNON

page 30

Page 31 : UNIX : les droits d’accèsTout fichier possède un propriétaire :• Très souvent le propriétaire d’un fichier est son créateur• Le propriétaire est le seul utilisateur classique à pouvoir modifier les droits d’accès du fichier• L'administrateur root peut également modifier les droits d’accès car c’est un utilisateur qui a tous les pouvoirs• Le propriétaire peut transférer la propriété du fichier perdant ainsi ses privilèges associés à un autre utilisateur qui deviendra à son tour le nouveau propriétaire31E.ANSERMIN R.VERIN R.GRIGNON

page 31

Page 32 : UNIX : les droits d’accèsTout fichier possède des droits d’accès :• lecture/écriture/éxecution read/write/exec r/w/x• lecture : le fichier peut être lu• écriture: le fichier peut être modifié/supprimé• exécution : le fichier peut être executé par le systèmeDans le cas d’un dossier : • lecture : le contenu est visible• écriture: le contenu est modifiable création de sous-dossiers, effacement de fichiers, …• exécution : l’utilisateur peut rentrer dans le dossier32E.ANSERMIN R.VERIN R.GRIGNON

page 32

Page 33 : UNIX : les droits d’accèsLes différents droits sont déclinés en fonction des utilisateurs qui accèdent au fichier :• le propriétaire• les utilisateurs du même groupe que le propriétaire• les autres utilisateursCette différenciation permet de configurer finement l’accès aux différents fichiers.Même si le propriétaire n’a aucun droit d’accès à un fichier, il peut toujours en modifier les droits33- r w x r - x - - -myapplicationE.ANSERMIN R.VERIN R.GRIGNON

page 33

Page 34 : UNIX : les droits d’accèsEn plus des informations concernant le propriétaire, le groupe, les droits d’accès, il est possible de savoir à quel type de fichier on a à faire : • “-”: un fichier classique• “d” : un répertoire• “l” : un lien “raccourci”34- r w x r w x r w x myapplicationd r w x r w x r w x myfolderl r w x r w x r w x mylinkE.ANSERMIN R.VERIN R.GRIGNON

page 34

Page 35 : UNIXSystème d’exploitation•multi-tâches•multi-utilisateurs4 concepts élémentaires :•les fichiers•les droits d’accès•les processus•la communication inter-processus35E.ANSERMIN R.VERIN R.GRIGNON

page 35

Page 36 : UNIX : les processusUnité élémentaire de gestion des traitements•un ensemble d’instructions à executer•un espace mémoire dédié pour les données de travail et les instructions•dispose d’autres ressources comme des descripteurs de fichiers, des ports reseau, … Thread “processus léger”•Fil d’execution partageant des données et différentesressources•On peut avoir plusieurs threads dans un processusChaque processus possède un identifiant unique PID et stockel’identifiant du processus “parent” qui lui a donné naissance PPID36E.ANSERMIN R.VERIN R.GRIGNON

page 36

Page 37 : UNIXSystème d’exploitation•multi-tâches•multi-utilisateurs4 concepts élémentaires :•les fichiers•les droits d’accès•les processus•la communication inter-processus37E.ANSERMIN R.VERIN R.GRIGNON

page 37

Page 38 : UNIX : la communication inter-processusPlusieurs processus peuvent communiquer entre eux via :• des signaux• une mémoire partagée• un tube “pipe”• une communication réseau “socket”Pour arbitrer l’accès à une ressource partagée, quelle qu’elle soit, il existe des services permettant d’obtenir et/ou d’attendre l’autorisation :• mutex• sémaphore38E.ANSERMIN R.VERIN R.GRIGNON

page 38

Page 39 : III. Commandes UNIX39E.ANSERMIN R.VERIN R.GRIGNON

page 39

Page 40 : Terminal de commandes :40A partir d’un terminal de commandes, on peut effectuer diverses actions sur le système en appellant des programmes executables déjà presentsUn interpréteur va s’occuper d’extraire les informations de la commande afin de l’executerE.ANSERMIN R.VERIN R.GRIGNON

page 40

Page 41 : Commandes :41Le format de base des commandes est le suivant :• nomcommande options argumentsChaque commande peut optionnellement posséder des options et/ou des argumentsOption avec une seule lettre : -o -l -r -fOption avec plusieurs lettres : --color --versionLes arguments sont généralement des noms de fichiers, des expressions, …E.ANSERMIN R.VERIN R.GRIGNON

page 41

Page 42 : Commandes :42Pour obtenir de l’aide détaillée sur une commande :• man nomcommande• permet d’afficher le manuel de la commande afin d’avoirune explication concrète de son utilisation• détaille l’ensemble des options possibles et leurs rôlesPour obtenir une aide succincte sur une commande :• nomcommande --help• aide-mémoire sur les principales optionsUne liste des commandes usuelles est présentée à lafin de ce document chapitre XIE.ANSERMIN R.VERIN R.GRIGNON

page 42

Page 43 : Commandes :43Chaque commande est un programme qui renvoie un code d’erreur en fin d’exécution• 0 : le traitement s’est terminé avec succès• autre valeur : une erreur est survenueUne variable shell cf. chapitre VI contient ce code d’erreur :• la commande echo permet de l’afficherls myDir affiche le contenu du dossierecho ? affiche le code retour de lsE.ANSERMIN R.VERIN R.GRIGNON

page 43

Page 44 : Commandes :44Il est possible d’indiquer des valeurs de caractères de manière littérale dans les arguments des commandes :• “ ? ” : remplace 1 caractère quel qu’il soit• “ “ : remplace plusieurs caractères quels qu’ils soient• “ “: remplace 1 caractère parmi une liste définie  affiche tous les fichiers PNGls ".png" affiche les fichiers PNG avec 3 caractèresls "???.png" affiche les fichiers PNG commençant par d ou fls "df.png"E.ANSERMIN R.VERIN R.GRIGNON

page 44

Page 45 : IV. Redirection des entrées/sorties45E.ANSERMIN R.VERIN R.GRIGNON

page 45

Page 46 : Redirection des entrées/sorties :46Toutes les commandes sont des exécutables programmes qui peuvent donc recevoir des données depuis l’entrée standard, et/ou envoyer des données vers la sortie standard et/ou l’erreur standardProgrammestd OUTstd ERRstd INE.ANSERMIN R.VERIN R.GRIGNON

page 46

Page 47 : Redirection des entrées/sorties :47Il est possible d’effectuer simplement des redirections de ces entrées/sorties les unes vers les autres• Dans le cas où l’on souhaite lire les données d’un fichierpour les traiter, et/ou écrire le résultat d’une commande dans un fichierProgrammestd OUTstd ERRstd INE.ANSERMIN R.VERIN R.GRIGNON

page 47

Page 48 : Redirection des entrées/sorties :48Rediriger le contenu d’un fichier vers un programme la commande sort trie les lignes reçues en entrée avant de les renvoyer sur sa sortiesort "myfile.txt"sortstd OUTstd INmyfile.txtE.ANSERMIN R.VERIN R.GRIGNON

page 48

Page 49 : Redirection des entrées/sorties :49Rediriger la sortie d’un programme vers un fichierMode remplacement :• création du fichier cible si inexistant• effacement du contenu initial du fichier cible si existant la commande ls affiche le contenu d’un dossierls "myfile.txt"lsstd OUTmyfile.txtE.ANSERMIN R.VERIN R.GRIGNON

page 49

Page 50 : Redirection des entrées/sorties :50Rediriger la sortie d’un programme vers un fichierMode ajout :• création du fichier cible si inexistant• ajout après le contenu initial du fichier cible si existant la commande ls affiche le contenu d’un dossierls "myfile.txt"lsstd OUTmyfile.txtE.ANSERMIN R.VERIN R.GRIGNON

page 50

Page 51 : Redirection des entrées/sorties :51Il est possible d’effectuer simplement des redirections de ces entrées/sorties les unes vers les autres• Dans le cas où l’on souhaite transférer le résultat d’une commande à la commande suivante : les tubes eng:pipesProgramme 1std OUTstd ERRstd INProgramme 2E.ANSERMIN R.VERIN R.GRIGNON

page 51

Page 52 : myfile.txtRedirection des entrées/sorties :52 la commande cat redirige l’entrée standard vers la sortie standard la commande sort trie les lignes enentrées avant de les renvoyer vers la sortiecat myfile.txt sort myfile2.txtstd OUTstd INcatsortstd OUTmyfile2.txtE.ANSERMIN R.VERIN R.GRIGNON

page 52

Page 53 : erreurs.txtmyfile.txtRedirection des entrées/sorties :53L’erreur standard est utilisée uniquement quand le programmedétecte une anomalie : de fait cette sortie n’est pas envoyée à la commande suivanteOn peut forcer la redirection de l’erreur standard vers un fichiercat myfile.txt 2erreurs.txt sort myfile2.txtstd OUTstd INcatsortstd OUTmyfile2.txtstd ERRE.ANSERMIN R.VERIN R.GRIGNON

page 53

Page 54 : myfile.txtRedirection des entrées/sorties :54L’erreur standard est utilisée uniquement quand le programmedétecte une anomalie : de fait cette sortie n’est pas envoyée à la commande suivanteOn peut forcer la redirection de l’erreur standard vers la sortiestandard et ainsi fusionner les 2 sorties en 1cat myfile.txt 2&1 sort myfile2.txtstd OUTstd INcatsortstd OUTmyfile2.txtstd ERRE.ANSERMIN R.VERIN R.GRIGNON

page 54

Page 55 : V. Script Shell - Introduction55E.ANSERMIN R.VERIN R.GRIGNON

page 55

Page 56 : Langages de scripts :56En programmation, il existe 2 grandes familles de langages :• Les langages compilés C/C++, Java, …• Les langages interprétés Python, PHP, JavaScript, …C’est dans la 2ème catégorie que se situe le ShellUn interpréteur est donc utilisé dans la console du terminal pour prendre en compte les commandesLe script en lui même n’est qu’un fichier texte dont les lignesseront interprêtées pendant l’exécutionE.ANSERMIN R.VERIN R.GRIGNON

page 56

Page 57 : Script Shell :57Automatise un ensemble d’instructionsEcriture rapideTypage faible chaînes de caractères par défautUtilise toutes les possibilités des commandes UNIXPeu d’interactions avec l’utilisateur en généralPeut prendre des paramètres utilisateursPas de compilationExécuté via un interpréteur ShellDifférents types de Shell existentPar conséquent, des langages différents et/ou des langages similaires avec des particularités propresE.ANSERMIN R.VERIN R.GRIGNON

page 57

Page 58 : Script Shell famille :58sh: le Shell d’originecsh: C-Shell, proche de la syntaxe du C ancienbsh: Bourne Shell, propriété de Bell mécanisme des tubestcsh: Tenex C-Shell, complétion automatique, historique, …ksh: fusion de csh et bsh, historique des commandesbash : Bourne Again Shell, open-source, reprend toutes les avancées, souvent celui par défaut dans les distributions Linuxzsh: fusion des shells précédentset d’autres… E.ANSERMIN R.VERIN R.GRIGNON

page 58

Page 59 : Script Shell - Exécution:59A partir de votre terminal, la commande suivante lance votrescript : bash myscript.shSi votre fichier de script un simple fichier texte possède les droits d’exécution, il est possible de le lancer comme tout autreexécutable./myscript.shEn réalité, votre script est passé en paramètre à l’interpréteur. Pour être certain de la bonne exécution de votre fichier de script, il convient d’ajouter le “hash-bang” en première ligne, en indiquant le bon interpréteur!/bin/bashE.ANSERMIN R.VERIN R.GRIGNON

page 59

Page 60 : VI. Script Shell – Les variables60E.ANSERMIN R.VERIN R.GRIGNON

page 60

Page 61 : Shell – Les variables :61➢Typage faible chaînes de caractères➢Pas besoin de déclarer les variables ➢La déclaration est implicite lors de l’initialisation➢L’opérateur d’affectation est le caractère ‘=‘a='Hello’b=5c=32.759⚠️Notez l’absence d’espace autour de l’opérateur ‘=‘E.ANSERMIN R.VERIN R.GRIGNON

page 61

Page 62 : Shell – Les variables :62Utilisation d’une variable lecture/affichageLa commande echo permet d’afficher une chaîne de caractères passée en paramètreLe caractère ‘’ doit toujours précéder le nom de la variableecho aIl est possible d’encadrer le nom de la variable par des accolades pour le borner avec précisionecho aSi vous avez des variables qui partagent un même préfixe, n’oubliez pas les accolades pour éviter les bugsE.ANSERMIN R.VERIN R.GRIGNON

page 62

Page 63 : Shell – Les chaînes de caractères :63➢En Shell il existe 3 types de chaînes :• Les chaînes littérales• Elles s’affichent telles qu’elles sont décrites sans aucunemodification• Elles sont entourées des caractères : '…'a=987b='a' b vaut : 'a' E.ANSERMIN R.VERIN R.GRIGNON

page 63

Page 64 : Shell – Les chaînes de caractères :64En Shell il existe 3 types de chaînes :• Les chaînes substituées• Les noms des variables sont remplacés par leurs valeursrespectives• Elles sont entourées des caractères : "…"a=987b="a" b vaut : '987'E.ANSERMIN R.VERIN R.GRIGNON

page 64

Page 65 : Shell – Les chaînes de caractères :65➢En Shell il existe 3 types de chaînes :• Les chaînes exécutées• Il s’agit de commandes dont les sorties seront utiliséescomme chaînes• Elles sont entourées des caractères : …b=ls b vaut la sortie de lsE.ANSERMIN R.VERIN R.GRIGNON

page 65

Page 66 : Shell – Les chaînes de caractères :66En Shell il existe 3 types de chaînes :• Les chaînes exécutées• Une syntaxe différente existe et permet d’être plus polyvalent dans l’écriture des scripts• Les commandes sont entourées des caractères : …varA=ls 'myfile'date '+Ymd’varB=ls -lai 'myfile'date '+Ymd'E.ANSERMIN R.VERIN R.GRIGNON

page 66

Page 67 : Shell – Les chaînes de caractères :67➢Il est possible de filtrer une chaîne de caractères pour ne récupérer qu’une sous partie en recherchant un motifmystr='A.coucou.Z' … à partir de la 1ère occurenceecho mystrcou affiche 'cou.Z' … à partir de la dernière occurenceecho mystrcou affiche '.Z' … jusqu’à la dernière occurenceecho mystrcou affiche 'A.cou' … jusqu’à la 1ère occurenceecho mystrcou affiche 'A.'E.ANSERMIN R.VERIN R.GRIGNON

page 67

Page 68 : Shell – Les chaînes de caractères :68Pour la concaténation, il n’y a pas d’opérateur particulierIl suffit de “coller” les chaînes pour qu’elles soient fusionnéesa='ABC'b='DEF’ par défaut les variables sont substituéesc="ab" ouc=abecho cE.ANSERMIN R.VERIN R.GRIGNON

page 68

Page 69 : Shell – Les entiers :69➢Un entier n’est rien d’autre qu’une chaîne de caractèresreprésentant une valeur entièrea=51b=-37➢Lors de l’affichage, rien ne différencie la valeur numériquesous-jacente de la chaîne :echo "la variable a vaut : a"echo 'et b vaut : 'bE.ANSERMIN R.VERIN R.GRIGNON

page 69

Page 70 : Shell – Les entiers :70Les opérations arithmétiques sur les entiers nécessitent unesyntaxe particulière avec les doubles parenthèses pour que le script comprenne qu’il a une opération de conversion de chaîneentier à faire :a=51b=-37add= a + b sub= a – b mul= a b div= a / b mod= a b echo add sub mul div modE.ANSERMIN R.VERIN R.GRIGNON

page 70

Page 71 : Shell – Les réels :71➢Les opérations arithmétiques sur les réels ne sont pas prisesen compte dans le Shell➢Il est nécessaire de faire appel à des commandes tierces pour effectuer les opérations➢Il existe une commande bc qui prend en entrée une expression arithmétique avec des réels, et renvoie la chaîne résultante du calcula=51.65b=-37.98r=echo "a+b" bcE.ANSERMIN R.VERIN R.GRIGNON

page 71

Page 72 : VII. Script Shell – Les branchements conditionnels72E.ANSERMIN R.VERIN R.GRIGNON

page 72

Page 73 : Shell – Les branchements conditionnels :73Conceptuellement, un branchement prend une condition booléenne• Le type booléen n’existe pas en Shell• On teste le retour d’une commandeToute expression testée dans un branchement doit être unecommande exécutée• Si la valeur de retour 0 est renvoyée, on exécute le bloc d’instructions ‘SI’• Pour toute autre valeur, on exécute le bloc d’instructions‘SINON’E.ANSERMIN R.VERIN R.GRIGNON

page 73

Page 74 : Shell – Les branchements conditionnels :74Syntaxe :if commandetheninstructions Aelseinstructions BfiE.ANSERMIN R.VERIN R.GRIGNON

page 74

Page 75 : Shell – Les branchements conditionnels :75Possibilité de mettre les mot-clés ‘if’ et ‘then’ sur la même lignes’ils sont séparés par un ‘;’ if commande ; theninstructions Aelseinstructions BfiLe mot-clé ‘else’ et le bloc d’instructions associé sontoptionnelsif commande ; theninstructions AfiE.ANSERMIN R.VERIN R.GRIGNON

page 75

Page 76 : Shell – Les branchements conditionnels :76Il est possible d’effectuer plusieurs branchements avec le test de plusieurs conditions successivesOn utilise pour cela le mot-clé ‘elif’ :if commande1 ; theninstructions Aelif commande2 ; theninstructions B…elseinstructions CfiE.ANSERMIN R.VERIN R.GRIGNON

page 76

Page 77 : Shell – Opérateurs logiques :77Il est possible de combiner le résultat de plusieurs commandesà l’aide d’opérateurs logiquesIl existe 2 opérateurs logiques en Shell• l’opérateur ‘ET’• l’opérateur ‘OU’ inclusifCes opérateurs sont interprétés en mode “évaluationparesseuse” lazy evaluationLa 2ème commande ne sera pas exécutée si le résultat de la 1ère satisfait déjà le résultat finalE.ANSERMIN R.VERIN R.GRIGNON

page 77

Page 78 : Shell – Opérateurs logiques :78L’opérateur ‘ET’ :if commande1 && commande2 ; then…else…fiEn évaluation paresseuse, la commande2 ne sera pas exécutée SI la commande1 échoue valeur de retour différente de 0E.ANSERMIN R.VERIN R.GRIGNON

page 78

Page 79 : Shell – Opérateurs logiques :79L’opérateur ‘OU’ :if commande1 commande2 ; then…else…fiEn évaluation paresseuse, la commande2 ne sera pas exécutée SI la commande1 réussit valeur de retour égale à 0E.ANSERMIN R.VERIN R.GRIGNON

page 79

Page 80 : Shell – Opérateurs de comparaison :80Même si le type booléen n’existe pas, il est possible d’effectuerdes comparaisons avec des opérateurs usuelsLa commande test prend en paramètre une expression de comparaisonUtile pour comparer des chaînes ou des valeurs numériquesif test expression ; theninstructions Aelseinstructions Bfi E.ANSERMIN R.VERIN R.GRIGNON

page 80

Page 81 : Shell – Opérateurs de comparaison :81➢Il existe une autre syntaxe ne faisant plus apparaitre le nom de la commande test, plus proche de celles utilisées dans les branchements conditionnels d’autres langages➢Cette syntaxe utilise des crochets pour contenir l’expressionif expression ; then…fi⚠️Notez les espaces autour de l’expression entre crochetsE.ANSERMIN R.VERIN R.GRIGNON

page 81

Page 82 : Shell – Opérateurs de comparaison :82Cette syntaxe remplace donc l’appel de la commande test dans la structure de branchement conditionnel :if … ; theninstructions Aelseinstructions Bfi Si la comparaison est correcte alors le bloc A sera effectué, sinon le bloc B E.ANSERMIN R.VERIN R.GRIGNON

page 82

Page 83 : Shell – Opérateurs de comparaison :83➢On peut combiner ces comparaisons avec les opérateurslogiques vus précédemment :if … && … ; theninstructions Aelif … … ; theninstructions Belseinstructions Cfi E.ANSERMIN R.VERIN R.GRIGNON

page 83

Page 84 : Shell – Comparaison de valeurs entières :84➢Pour comparer des valeurs numériques entières il existe des opérateurs pour toutes les comparaisons usuelles :a=5b=12 a –eq b égalité equal a –ne b différencenot equal a –ge b sup. ou égal great. or eq. a –gt b sup. strict. greater than a –le b inf. ou égal less. or eq. a –lt b inf. strict. lesser than⚠️Notez les espaces autour de l’opérateurE.ANSERMIN R.VERIN R.GRIGNON

page 84

Page 85 : Shell – Comparaison de valeurs entières :85➢Il est possible d’utiliser des opérateurs de comparaison dontles symboles sont plus proches de leur représentationmathématique➢Pour cela, il faut utiliser la syntaxe des doubles parenthèsesvue précédemment :if a == b … égalitéif a != b … différenceif a = b … sup. ou égalif a b … sup. strict.if a = b … inf. ou égalif a b … inf. strict.E.ANSERMIN R.VERIN R.GRIGNON

page 85

Page 86 : Shell – Comparaison de chaînes :86➢Pour comparer des chaînes de caractères il existe plusieursopérateurs :• égalité• différence• supérieur suivantdans l’ordre lexicographique• inférieurprécédent dans l’ordre lexicographique• chaîne vide• chaîne non videE.ANSERMIN R.VERIN R.GRIGNON

page 86

Page 87 : Shell – Comparaison de chaînes :87➢Pour comparer des chaînes de caractères il existe plusieursopérateurs :• égalité• différencea='Coucou'b='Hello’ "a" = "b" egalité "a" == "b" egalité synonyme de = "a" != "b" différence⚠️L’opérateur d’égalité est un simple ‘=‘⚠️Notez les espaces autour de l’opérateurE.ANSERMIN R.VERIN R.GRIGNON

page 87

Page 88 : Shell – Comparaison de chaînes :88➢Pour comparer des chaînes de caractères il existe plusieursopérateurs :• supérieur suivantdans l’ordre lexicographique• inférieurprécédent dans l’ordre lexicographiquea='Coucou'b='Hello’ "a" "b" supérieur "a" "b" inférieur⚠️Notez les espaces autour de l’opérateurE.ANSERMIN R.VERIN R.GRIGNON

page 88

Page 89 : Shell – Comparaison de chaînes :89➢Pour comparer des chaînes de caractères il existe plusieursopérateurs :• chaîne vide• chaîne non videa='Coucou'b='' -n "a" test non-vide VRAI ici -z "b" test vide VRAI ici⚠️Notez les espaces autour de l’opérateurE.ANSERMIN R.VERIN R.GRIGNON

page 89

Page 90 : Shell – Tests sur les propriétés des fichiers :90myfile='monprogramme.c'➢teste si la variable est une string déclarée ET non vide -s myfile ➢teste si la cible existe -e myfile ➢teste si la cible est un fichier -f myfile ➢teste si la cible est un dossier -d myfile ➢teste si la cible est un Lien -L myfile E.ANSERMIN R.VERIN R.GRIGNON

page 90

Page 91 : Shell – Tests sur les propriétés des fichiers :91myfile='monprogramme.c'➢teste si la cible possède un accès de type read -r myfile ➢teste si la cible possède un accès de type write -w myfile ➢teste si la cible possède un accès de type execution -x myfile ➢teste si la cible a été modifiée depuis la dernière lecture -N myfile ⚠️Par défaut, les droits d’accès sont testés par rapport à l’utilisateur qui a lancé le script utilisateur courantE.ANSERMIN R.VERIN R.GRIGNON

page 91

Page 92 : Shell – Opérateurs de comparaison :92➢Il est possible de ‘complémenter’ logiquement le retour d’unecomparaison➢Pas nécessairement utile pour les entiers ou les chaînes de caractères car tous les opérateurs existent➢Peut être utile pour tester l’absence de propriétés des fichiers ! s1 = s2 ! 5 -eq 7 ! -d 'monfichier.txt' ⚠️Notez l’espace entre le ‘!’ et l’expression qui suitE.ANSERMIN R.VERIN R.GRIGNON

page 92

Page 93 : Shell – Branchement de type « case » :93➢Lorsque l’on souhaite vérifier la valeur d’une variable parmiplusieurs valeurs fixes, la structure “Selon … Cas …” estsouvent utilisée en algorithmie➢Les mots clés case … in … esac sont utilisés pour former cetype de structurecase a in…esacE.ANSERMIN R.VERIN R.GRIGNON

page 93

Page 94 : Shell – Branchement de type « case » :94➢On peut donc comparer la chaîne originale avec n’importequelle chaîne constante➢Chaque valeur de comparaison est suivie du caractère ‘’ qui indique le début du bloc d’instructions associé➢Chaque bloc d’instructions se termine par un double “;”case a in1… ;;2 … ;;'Hello' … ;; esacE.ANSERMIN R.VERIN R.GRIGNON

page 94

Page 95 : Shell – Branchement de type « case » :95➢Il est possible de comparer la chaîne d’origine en utilisant les caractères spéciaux des chaînes , ?, … ou le contenu des autres variables➢Le cas “défaut” se note donc implicitement “”case a intoto … ;;???.txt … ;;"b.png" … ;; … ;;esacE.ANSERMIN R.VERIN R.GRIGNON

page 95

Page 96 : VIII. Script Shell – Les boucles96E.ANSERMIN R.VERIN R.GRIGNON

page 96

Page 97 : Shell – Les boucles :97Les boucles permettent d’exécuter un bloc d’instructionsplusieurs fois en fonction de conditions particulièresPlusieurs utilisations sont possibles :• boucle “POUR” qui va soit utiliser une variable dont elle vamodifier la valeur compteur, soit qui va parcourir une listed’éléments itérateur• boucle “TANT QUE” qui va itérer tant qu’une condition reste valideE.ANSERMIN R.VERIN R.GRIGNON

page 97

Page 98 : Shell – La boucle POUR compteur:98La syntaxe pour ce type de boucle est similaire à celle du langage Cfor i=5 ; i=12 ; i++ ; dodoecho i…doneComme pour le branchement conditionnel, il est possible d’écrire les mot-clés ‘for’ et ‘do’ sur la même ligne s’il sontséparés par un ‘;’E.ANSERMIN R.VERIN R.GRIGNON

page 98

Page 99 : Shell – La boucle POUR compteur/itérateur:99Il existe une syntaxe qui utilise un opérateur “plage”, et le compteur va itérer dans cette plage pour prendre chaquevaleur l’une après l’autrefor k in 5..12 ; doecho k…doneLes valeurs de début et de fin sont incluesE.ANSERMIN R.VERIN R.GRIGNON

page 99

Page 100 : Shell – La boucle POUR itérateur:100En Shell, une chaîne de caractères est considérée commeune liste de valeurs séparées par des caractèresd’espacement espace, tabulation, retour à la ligne, …Il est donc possible d’itérer sur chacune des valeurscontenues dans cette chaîne listeliste='abc def ghi jkl' for var in liste ; doecho var…doneE.ANSERMIN R.VERIN R.GRIGNON

page 100

Page 101 : Shell – La boucle POUR itérateur:101La liste fournie dans la boucle peut provenir d’une commandeexécutéeLa commande ls permet d’obtenir une liste de fichiers dans le répertoire courant : on peut itérer sur cette liste si l’onrécupère le résultat de la commande chaîne exécutéefichiers=lsfor fic in fichiers; doecho fic…doneE.ANSERMIN R.VERIN R.GRIGNON

page 101

Page 102 : Shell – Les caractères de séparation :102Les espaces et les tabulations dans les données récupéréesdepuis les fichiers ou les commandes, peuvent créer des problèmes dans l’exécution des scriptsLes boucles peuvent “couper” les listes aux mauvais endroitsà cause de ces caractères d’espacementsIl faudrait pouvoir indiquer à l’itérateur quels sont les caractères pouvant servir de séparateur : c’est le but d’unevariable pré-existante IFSE.ANSERMIN R.VERIN R.GRIGNON

page 102

Page 103 : Shell – Les caractères de séparation :103Par défaut la variable IFS contient tous les caractèresd’espacement espaces, tabulations, retours à la ligneIl est possible de la modifier pendant l’exécution d’un script, mais il est toujours prudent de conserver sa valeur d’originepour la restaurer plus tard dans le script en coursTous vos scripts sont exécutés dans des contextes mémoireséparés, donc ce n’est pas trop impactant si la valeurd’origine de IFS n’est pas restauréeE.ANSERMIN R.VERIN R.GRIGNON

page 103

Page 104 : Shell – Les caractères de séparation :104Dans le cas où certains noms de fichiers contiendraient des espaces ou des tabulations, on met à jour IFS pour ne tenircompte que des retours à la ligne pour découper la chaîne :oldIFS=IFS sauvegarde de IFSIFS='\n' mise à jour de IFS fichiers=ls liste des fichiersfor fic in fichiers; doecho fic…doneIFS=oldIFS restauration de IFSE.ANSERMIN R.VERIN R.GRIGNON

page 104

Page 105 : Shell – Les boucles :105Les boucles permettent d’exécuter un bloc d’instructionsplusieurs fois en fonction de conditions particulièresPlusieurs utilisations sont possibles :• boucle “POUR” qui va soit utiliser une variable dont elle vamodifier la valeur compteur, soit qui va parcourir une listed’éléments itérateur• boucle “TANT QUE” qui va itérer tant qu’une condition reste valideE.ANSERMIN R.VERIN R.GRIGNON

page 105

Page 106 : Shell – La boucle TANT QUE :106Comme pour les branchements conditionnels, cette boucle prend en paramètre une condition qui est le résultat d’unecommande ou d’une comparaisonTant que cette condition est vraie, les itérations s’exécutentles une après les autreswhile … ; dodo…doneE.ANSERMIN R.VERIN R.GRIGNON

page 106

Page 107 : Shell – La boucle TANT QUE :107Utilisation de la boucle avec une condition provenant d’unecomparaison de compteura=1while a -le 10 ; doecho aa=a+1doneE.ANSERMIN R.VERIN R.GRIGNON

page 107

Page 108 : Shell – La boucle TANT QUE :108Utilisation de la boucle avec une commande retournant un code d’erreur différent de 0 pour stopper les itérationsIci la commande read permet de retourner les lignes d’un fichier, une par une, à partir d’un flux de données icil’opérateur ‘‘ fichier='myfile.txt’while read row ; doecho rowdone fichierE.ANSERMIN R.VERIN R.GRIGNON

page 108

Page 109 : IX. Script Shell – Les arguments109E.ANSERMIN R.VERIN R.GRIGNON

page 109

Page 110 : Shell – Les arguments :110Tout script peut prendre des arguments comme n’importequel programmeIl existe des variables prédéfinies qui contiennent des informations sur ces arguments :• Le nom du script• Le nombre d’arguments• La chaîne contenant tous les arguments• Des variables pour chaque argumentE.ANSERMIN R.VERIN R.GRIGNON

page 110

Page 111 : Shell – Les arguments :111Le nom du script en cours d’exécution :nomscript=0Le nombre d’arguments :nbargs=Le valeurs de chaque argument :arg1=1arg2=2arg3=3La chaîne complète contenant tous les arguments :allargs=allargs=@ identiques en bashE.ANSERMIN R.VERIN R.GRIGNON

page 111

Page 112 : X. Script Shell – Les fonctions112E.ANSERMIN R.VERIN R.GRIGNON

page 112

Page 113 : Shell – Les fonctions :113En Shell, une fonction n’est rien d’autre qu’un sous-script qui sera lancé par le script courantLa fonction est donc considérée comme n’importe quelle autre commandeUne fonction devra donc tester ses propres arguments, effectuer ses calculs, affichages, …, puis retourner un code d’erreurE.ANSERMIN R.VERIN R.GRIGNON

page 113

Page 114 : Shell – Les fonctions :114Syntaxes de déclaration d’une fonction : Syntaxe 1function test … Syntaxe 2test …E.ANSERMIN R.VERIN R.GRIGNON

page 114

Page 115 : Shell – Les fonctions :115Exemple de fonction :test if -ge 1 ; thenecho 'Il y a 1+ arguments'return 0elseecho 'argument manquant'return 1fiE.ANSERMIN R.VERIN R.GRIGNON

page 115

Page 116 : Shell – Les fonctions :116Exemple d’utilisation de la fonction/commande :if test ; thenecho 'OK'elseecho 'ERROR'fiif test 1 2 3 ; thenecho 'OK'elseecho 'ERROR'fi argument manquant ERROR Il y a 1+ arguments OKE.ANSERMIN R.VERIN R.GRIGNON

page 116

Page 117 : Shell – Les fonctions :117La variable ? est une variable prédéfinie et contient le code retour de la dernière commande exécutéeExemple de récupération de la sortie et du code d’erreurd’une fonction/commandevar1=testret1=?var2=test 1 2 3ret2=?echo var1 argument manquantecho ret1 1echo var2 il y a 1+ argumentsecho ret2 0E.ANSERMIN R.VERIN R.GRIGNON

page 117

Page 118 : XI. Commandes courantes118E.ANSERMIN R.VERIN R.GRIGNON

page 118

Page 119 : Affichage :119ls options chemin :• affichage des fichiers• options :-l : format d’affichage long taille, date, droits, …-a : affichage des fichiers cachés-h : affichage des données en unités lisibles facilement• chemin :fichier : affiche sa descriptiondossier : affiche son contenuE.ANSERMIN R.VERIN R.GRIGNON

page 119

Page 120 : Affichage :120pwd :• affichage du chemin absolu du dossier courantwho options arguments :• liste les utilisateurs connectés au systèmedate options format : • affiche la date et l’heurefile options fichier : • fourni des informations sur un fichierecho valeur : • affiche une chaîne de caractèresE.ANSERMIN R.VERIN R.GRIGNON

page 120

Page 121 : Manipulation de chaînes :121cat options fichier :• affiche le contenu complet d’un fichierhead options fichier :• affiche les premières lignes d’un fichiertail options fichier :• affiche les dernières lignes d’un fichiermore options fichier :• affiche le contenu d’un fichier, page par pagewc options fichier :• compte le nombre de caractères d’un fichier• permet de compter le nombre de lignesE.ANSERMIN R.VERIN R.GRIGNON

page 121

Page 122 : Manipulation de fichiers :122cd options dossier :• changement de répertoire couranttouch options fichier :• création de fichier vide• si le fichier existe déjà, met à jour sa date de dernièremodificationmkdir options dossier :• création de dossierln options cible nomlien :• création de lien symbolique ou physiqueE.ANSERMIN R.VERIN R.GRIGNON

page 122

Page 123 : Manipulation de fichiers :123mv options source destination :• déplacement/renommage de fichiers/dossierscp options source destination :• copie de fichiersrm options fichier :• suppression de fichiers/dossierschmod options mode fichier :• modification des droits d’accès d’un fichier/dossierE.ANSERMIN R.VERIN R.GRIGNON

page 123

Page 124 : Archivage :124tar options fichiers :• permet d’archiver / désarchiver des fichiers• permet de compresser ou non l’archive• options :-c : créer une archive à partir de fichiers-x : extraire les fichiers d’une archive-v : affichage détaillé des opérations sur la console-f : spécification du fichier d’archive-z : activation de la décompression de l’archiveE.ANSERMIN R.VERIN R.GRIGNON

page 124

Page 125 : Filtrage :125grep options motif fichiers :• cherche des lignes contenant le motif dans des fichiers• filtrage “en ligne”cut options fichier :• extrait des “colonnes” pour chacun des lignes d’un fichier• permet de définir la chaîne qui sert de séparateur• permet de spécifier quelles colonnes conserver• filtrage “en colonne”sort options fichiers :• Trie les lignes du fichier afin de les afficher dans l’ordre• ordres alphabétique ou numérique• ordre croissant ou décroissantE.ANSERMIN R.VERIN R.GRIGNON

page 125

Page 126 : Processus :126ps options :• affiche les processus en cours d’utilisationtop options :• affiche la liste des processus les plus actifs en temps réelkill options pid:• envoie un signal à un processus souvent pour y mettre finE.ANSERMIN R.VERIN R.GRIGNON

page 126

Pages : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126

Le contenu de cet article est la propriété exclusive de son auteur.