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 2 : I. Contexte2E.ANSERMIN R.VERIN R.GRIGNON
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 4 : ContexteLe système d’exploitation permet de gérer plusieurs tâches nécessaires au bon fonctionnement de l’ordinateur :4Interface utilisateur• Interprète de commandes• Interface graphiqueGestion des périphériques• PilotesGestion de la mémoire secondaire• Mémoire non volatile disque dur, clef USB, … • Structure de stockage des donnéesfichiersGestion de la mémoire vive• Mémoire vive RAM• Allocation / Libération / Segmentation• Pour le noyau et pour les autres tâchesNoyau• Gestion des “processus”• Allocation de CPU• Gestion des interruptionsE.ANSERMIN R.VERIN R.GRIGNON
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 6 : II. Présentation des concepts6E.ANSERMIN R.VERIN R.GRIGNON
Page 7 : UNIXSystème d’exploitation•multi-tâches•multi-utilisateurs4 concepts élémentaires :•les fichiers•les droits d’accès•les processus•la communication inter-processus7E.ANSERMIN R.VERIN R.GRIGNON
Page 8 : UNIXSystème d’exploitation•multi-tâches•multi-utilisateurs4 concepts élémentaires :•les fichiers•les droits d’accès•les processus•la communication inter-processus8E.ANSERMIN R.VERIN R.GRIGNON
Page 9 : UNIX : les fichiersUnité élémentaire de gestion des ressourcesRé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 secondaireSous Unix, tout est vu comme un fichier fichier, dossier, raccourci, flux de données entrant ou sortant, …9E.ANSERMIN R.VERIN R.GRIGNON
Page 10 : UNIX : les fichiersCe n’est pas le fichier en lui-même qui contient les informations décrites précédemmentElles sont stockées dans ce que l’on nomme un inodeinode index of nodeLe 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 uniqueLorsque 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 11 : UNIX : les fichiersIllustration d’un fichier dans la mémoire du système11E.ANSERMIN R.VERIN R.GRIGNONINODE1DATA BLOCK 1DATA BLOCK 2DATA BLOCK ... FILE1
Page 12 : UNIX : les fichiersIl est possible de créer des liens vers des fichiersUn peu à l’image des raccourcis, ces liens permettent d’accéder à du contenu qui est ailleurs dans l’arborescence des fichiersIl existe plusieurs types de liensLes liens symboliques liens souplesLes liens physiques liens durs12E.ANSERMIN R.VERIN R.GRIGNON
Page 13 : UNIX : les fichiers13E.ANSERMIN R.VERIN R.GRIGNONINODE1DATA BLOCK 1DATA BLOCK 2 FILE1link-SINODE2Liens symboliques : fichier avec son propre inodeSi le fichier cible est supprimé, le lien ne fonctionne plusSchéma de lien symbolique fast
Page 14 : UNIX : les fichiersLiens symboliques : fichier avec son propre inodeSi le fichier cible est supprimé, le lien ne fonctionne plusSchéma de lien symbolique fast14E.ANSERMIN R.VERIN R.GRIGNONINODE1DATA BLOCK 1FILE1link-SINODE2
Page 15 : UNIX : les fichiersLiens physiques : fichier avec un lien vers l’inode de la cibleSi le fichier cible est supprimé, le lien fonctionne toujoursSi 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 16 : UNIX : les dossiersLes fichiers peuvent être regroupés hiérarchiquement dans un répertoire dossierUn dossier est un fichier dont le contenu est la liste des références des fichiers qu’il contientIl a les mêmes propriétés qu’un fichier16/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 17 : UNIX : les dossiers/ : répertoire racine root17/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 18 : UNIX : les dossiers/bin : commandes de base pour tous les utilisateurs18/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 19 : UNIX : les dossiers/dev : fichiers pilotant les périphériques matériels19/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 20 : UNIX : les dossiers/etc : fichiers de configuration fichiers de démarrage20/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 21 : UNIX : les dossiers/home : fichiers des utilisateurs21/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 22 : UNIX : les dossiers/lib : bibliothèques compilées nécessaires pour les binaires dans /bin22/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 23 : UNIX : les dossiers/tmp : fichiers de travail temporaires23/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 24 : UNIX : les dossiers/usr/include : fichiers d’entête des langages24/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 25 : UNIX : les dossiers/usr/bin : commandes complémentaires de l’utilisateur25/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 26 : UNIX : les dossiers/var : fichiers divers boîte email, fichiers temporaires, fichiers journaux, …26/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 27 : UNIX : les dossiers/home/rgn : dossier personnel de l’utilisateur « rgn »27/bindevetclibtmpusrbinincludehomevareanrgnE.ANSERMIN R.VERIN R.GRIGNON
Page 28 : UNIX : les dossiersUn chemin commençant par “ / “ est un chemin absoluTout autre chemin est un chemin relatif par rapport repertoire courantLe 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 29 : UNIXSystème d’exploitation•multi-tâches•multi-utilisateurs4 concepts élémentaires :•les fichiers•les droits d’accès•les processus•la communication inter-processus29E.ANSERMIN R.VERIN R.GRIGNON
Page 30 : UNIX : les droits d’accèsTout 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 31 : UNIX : les droits d’accèsTout 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 32 : UNIX : les droits d’accèsTout 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èmeDans 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 33 : UNIX : les droits d’accèsLes 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 utilisateursCette 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 34 : UNIX : les droits d’accèsEn 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 35 : UNIXSystème d’exploitation•multi-tâches•multi-utilisateurs4 concepts élémentaires :•les fichiers•les droits d’accès•les processus•la communication inter-processus35E.ANSERMIN R.VERIN R.GRIGNON
Page 36 : UNIX : les processusUnité é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 processusChaque 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 37 : UNIXSystème d’exploitation•multi-tâches•multi-utilisateurs4 concepts élémentaires :•les fichiers•les droits d’accès•les processus•la communication inter-processus37E.ANSERMIN R.VERIN R.GRIGNON
Page 38 : UNIX : la communication inter-processusPlusieurs 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 39 : III. Commandes UNIX39E.ANSERMIN R.VERIN R.GRIGNON
Page 40 : Terminal de commandes :40A partir d’un terminal de commandes, on peut effectuer diverses actions sur le système en appellant des programmes executables déjà presentsUn interpréteur va s’occuper d’extraire les informations de la commande afin de l’executerE.ANSERMIN R.VERIN R.GRIGNON
Page 41 : Commandes :41Le format de base des commandes est le suivant :• nomcommande options argumentsChaque commande peut optionnellement posséder des options et/ou des argumentsOption avec une seule lettre : -o -l -r -fOption avec plusieurs lettres : --color --versionLes arguments sont généralement des noms de fichiers, des expressions, …E.ANSERMIN R.VERIN R.GRIGNON
Page 42 : Commandes :42Pour 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ôlesPour obtenir une aide succincte sur une commande :• nomcommande --help• aide-mémoire sur les principales optionsUne liste des commandes usuelles est présentée à lafin de ce document chapitre XIE.ANSERMIN R.VERIN R.GRIGNON
Page 43 : Commandes :43Chaque 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 survenueUne variable shell cf. chapitre VI contient ce code d’erreur :• la commande echo permet de l’afficherls myDir affiche le contenu du dossierecho ? affiche le code retour de lsE.ANSERMIN R.VERIN R.GRIGNON
Page 44 : Commandes :44Il 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 45 : IV. Redirection des entrées/sorties45E.ANSERMIN R.VERIN R.GRIGNON
Page 46 : Redirection des entrées/sorties :46Toutes 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 47 : Redirection des entrées/sorties :47Il 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 48 : Redirection des entrées/sorties :48Rediriger 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 49 : Redirection des entrées/sorties :49Rediriger la sortie d’un programme vers un fichierMode 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 50 : Redirection des entrées/sorties :50Rediriger la sortie d’un programme vers un fichierMode 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 51 : Redirection des entrées/sorties :51Il 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 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 53 : erreurs.txtmyfile.txtRedirection des entrées/sorties :53L’erreur standard est utilisée uniquement quand le programmedétecte une anomalie : de fait cette sortie n’est pas envoyée à la commande suivanteOn 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 54 : myfile.txtRedirection des entrées/sorties :54L’erreur standard est utilisée uniquement quand le programmedétecte une anomalie : de fait cette sortie n’est pas envoyée à la commande suivanteOn 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 55 : V. Script Shell - Introduction55E.ANSERMIN R.VERIN R.GRIGNON
Page 56 : Langages de scripts :56En 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 ShellUn interpréteur est donc utilisé dans la console du terminal pour prendre en compte les commandesLe 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 57 : Script Shell :57Automatise un ensemble d’instructionsEcriture rapideTypage faible chaînes de caractères par défautUtilise toutes les possibilités des commandes UNIXPeu d’interactions avec l’utilisateur en généralPeut prendre des paramètres utilisateursPas de compilationExécuté via un interpréteur ShellDifférents types de Shell existentPar conséquent, des langages différents et/ou des langages similaires avec des particularités propresE.ANSERMIN R.VERIN R.GRIGNON
Page 58 : Script Shell famille :58sh: le Shell d’originecsh: C-Shell, proche de la syntaxe du C ancienbsh: Bourne Shell, propriété de Bell mécanisme des tubestcsh: Tenex C-Shell, complétion automatique, historique, …ksh: fusion de csh et bsh, historique des commandesbash : Bourne Again Shell, open-source, reprend toutes les avancées, souvent celui par défaut dans les distributions Linuxzsh: fusion des shells précédentset d’autres… E.ANSERMIN R.VERIN R.GRIGNON
Page 59 : Script Shell - Exécution:59A partir de votre terminal, la commande suivante lance votrescript : bash myscript.shSi 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.shEn 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 60 : VI. Script Shell – Les variables60E.ANSERMIN R.VERIN R.GRIGNON
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 62 : Shell – Les variables :62Utilisation d’une variable lecture/affichageLa commande echo permet d’afficher une chaîne de caractères passée en paramètreLe caractère ‘’ doit toujours précéder le nom de la variableecho aIl est possible d’encadrer le nom de la variable par des accolades pour le borner avec précisionecho aSi 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 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 64 : Shell – Les chaînes de caractères :64En 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 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 66 : Shell – Les chaînes de caractères :66En 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 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 68 : Shell – Les chaînes de caractères :68Pour la concaténation, il n’y a pas d’opérateur particulierIl 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 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 70 : Shell – Les entiers :70Les 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îneentier à 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 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 72 : VII. Script Shell – Les branchements conditionnels72E.ANSERMIN R.VERIN R.GRIGNON
Page 73 : Shell – Les branchements conditionnels :73Conceptuellement, un branchement prend une condition booléenne• Le type booléen n’existe pas en Shell• On teste le retour d’une commandeToute 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 74 : Shell – Les branchements conditionnels :74Syntaxe :if commandetheninstructions Aelseinstructions BfiE.ANSERMIN R.VERIN R.GRIGNON
Page 75 : Shell – Les branchements conditionnels :75Possibilité 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 BfiLe mot-clé ‘else’ et le bloc d’instructions associé sontoptionnelsif commande ; theninstructions AfiE.ANSERMIN R.VERIN R.GRIGNON
Page 76 : Shell – Les branchements conditionnels :76Il est possible d’effectuer plusieurs branchements avec le test de plusieurs conditions successivesOn utilise pour cela le mot-clé ‘elif’ :if commande1 ; theninstructions Aelif commande2 ; theninstructions B…elseinstructions CfiE.ANSERMIN R.VERIN R.GRIGNON
Page 77 : Shell – Opérateurs logiques :77Il est possible de combiner le résultat de plusieurs commandesà l’aide d’opérateurs logiquesIl existe 2 opérateurs logiques en Shell• l’opérateur ‘ET’• l’opérateur ‘OU’ inclusifCes opérateurs sont interprétés en mode “évaluationparesseuse” lazy evaluationLa 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 78 : Shell – Opérateurs logiques :78L’opérateur ‘ET’ :if commande1 && commande2 ; then…else…fiEn é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 79 : Shell – Opérateurs logiques :79L’opérateur ‘OU’ :if commande1 commande2 ; then…else…fiEn é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 80 : Shell – Opérateurs de comparaison :80Même si le type booléen n’existe pas, il est possible d’effectuerdes comparaisons avec des opérateurs usuelsLa commande test prend en paramètre une expression de comparaisonUtile pour comparer des chaînes ou des valeurs numériquesif test expression ; theninstructions Aelseinstructions Bfi E.ANSERMIN R.VERIN R.GRIGNON
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 82 : Shell – Opérateurs de comparaison :82Cette 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 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 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 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 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 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 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 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 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 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 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 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 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 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 96 : VIII. Script Shell – Les boucles96E.ANSERMIN R.VERIN R.GRIGNON
Page 97 : Shell – Les boucles :97Les boucles permettent d’exécuter un bloc d’instructionsplusieurs fois en fonction de conditions particulièresPlusieurs 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 98 : Shell – La boucle POUR compteur:98La syntaxe pour ce type de boucle est similaire à celle du langage Cfor i=5 ; i=12 ; i++ ; dodoecho i…doneComme 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 99 : Shell – La boucle POUR compteur/itérateur:99Il 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…doneLes valeurs de début et de fin sont incluesE.ANSERMIN R.VERIN R.GRIGNON
Page 100 : Shell – La boucle POUR itérateur:100En 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 101 : Shell – La boucle POUR itérateur:101La liste fournie dans la boucle peut provenir d’une commandeexécutéeLa 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 102 : Shell – Les caractères de séparation :102Les 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 scriptsLes boucles peuvent “couper” les listes aux mauvais endroitsà cause de ces caractères d’espacementsIl 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 103 : Shell – Les caractères de séparation :103Par défaut la variable IFS contient tous les caractèresd’espacement espaces, tabulations, retours à la ligneIl 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 coursTous 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 104 : Shell – Les caractères de séparation :104Dans 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 105 : Shell – Les boucles :105Les boucles permettent d’exécuter un bloc d’instructionsplusieurs fois en fonction de conditions particulièresPlusieurs 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 106 : Shell – La boucle TANT QUE :106Comme pour les branchements conditionnels, cette boucle prend en paramètre une condition qui est le résultat d’unecommande ou d’une comparaisonTant que cette condition est vraie, les itérations s’exécutentles une après les autreswhile … ; dodo…doneE.ANSERMIN R.VERIN R.GRIGNON
Page 107 : Shell – La boucle TANT QUE :107Utilisation 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 108 : Shell – La boucle TANT QUE :108Utilisation de la boucle avec une commande retournant un code d’erreur différent de 0 pour stopper les itérationsIci 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 109 : IX. Script Shell – Les arguments109E.ANSERMIN R.VERIN R.GRIGNON
Page 110 : Shell – Les arguments :110Tout script peut prendre des arguments comme n’importequel programmeIl 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 111 : Shell – Les arguments :111Le nom du script en cours d’exécution :nomscript=0Le nombre d’arguments :nbargs=Le valeurs de chaque argument :arg1=1arg2=2arg3=3La chaîne complète contenant tous les arguments :allargs=allargs=@ identiques en bashE.ANSERMIN R.VERIN R.GRIGNON
Page 112 : X. Script Shell – Les fonctions112E.ANSERMIN R.VERIN R.GRIGNON
Page 113 : Shell – Les fonctions :113En Shell, une fonction n’est rien d’autre qu’un sous-script qui sera lancé par le script courantLa fonction est donc considérée comme n’importe quelle autre commandeUne fonction devra donc tester ses propres arguments, effectuer ses calculs, affichages, …, puis retourner un code d’erreurE.ANSERMIN R.VERIN R.GRIGNON
Page 114 : Shell – Les fonctions :114Syntaxes de déclaration d’une fonction : Syntaxe 1function test … Syntaxe 2test …E.ANSERMIN R.VERIN R.GRIGNON
Page 115 : Shell – Les fonctions :115Exemple de fonction :test if -ge 1 ; thenecho 'Il y a 1+ arguments'return 0elseecho 'argument manquant'return 1fiE.ANSERMIN R.VERIN R.GRIGNON
Page 116 : Shell – Les fonctions :116Exemple 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 117 : Shell – Les fonctions :117La variable ? est une variable prédéfinie et contient le code retour de la dernière commande exécutéeExemple 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 118 : XI. Commandes courantes118E.ANSERMIN R.VERIN R.GRIGNON
Page 119 : Affichage :119ls 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 descriptiondossier : affiche son contenuE.ANSERMIN R.VERIN R.GRIGNON
Page 120 : Affichage :120pwd :• affichage du chemin absolu du dossier courantwho options arguments :• liste les utilisateurs connectés au systèmedate options format : • affiche la date et l’heurefile options fichier : • fourni des informations sur un fichierecho valeur : • affiche une chaîne de caractèresE.ANSERMIN R.VERIN R.GRIGNON
Page 121 : Manipulation de chaînes :121cat options fichier :• affiche le contenu complet d’un fichierhead options fichier :• affiche les premières lignes d’un fichiertail options fichier :• affiche les dernières lignes d’un fichiermore options fichier :• affiche le contenu d’un fichier, page par pagewc options fichier :• compte le nombre de caractères d’un fichier• permet de compter le nombre de lignesE.ANSERMIN R.VERIN R.GRIGNON
Page 122 : Manipulation de fichiers :122cd options dossier :• changement de répertoire couranttouch options fichier :• création de fichier vide• si le fichier existe déjà, met à jour sa date de dernièremodificationmkdir options dossier :• création de dossierln options cible nomlien :• création de lien symbolique ou physiqueE.ANSERMIN R.VERIN R.GRIGNON
Page 123 : Manipulation de fichiers :123mv options source destination :• déplacement/renommage de fichiers/dossierscp options source destination :• copie de fichiersrm options fichier :• suppression de fichiers/dossierschmod options mode fichier :• modification des droits d’accès d’un fichier/dossierE.ANSERMIN R.VERIN R.GRIGNON
Page 124 : Archivage :124tar 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 125 : Filtrage :125grep 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 126 : Processus :126ps options :• affiche les processus en cours d’utilisationtop options :• affiche la liste des processus les plus actifs en temps réelkill options pid:• envoie un signal à un processus souvent pour y mettre finE.ANSERMIN R.VERIN R.GRIGNON
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