Présentation du système Linux PDF
Document Details
Uploaded by Deleted User
Pr. Baqach Adil
Tags
Related
Summary
Présentation du système d'exploitation Linux. Le document fournit une introduction de base. Il comprend un aperçu historique, les spécificités et les fonctions principales de Linux, ainsi que ses concepts fondamentaux.
Full Transcript
Linux Chapitre 1: Présentation Présentation du système Linux Pr. Baqach Adil 1 Linux Chapitre 1: Présentation Plan du cours Chapitre 1 : Présentation sur Linux Chapitre 2 : Commandes de bases Chapitre 3 : Droits d'accès aux fichi...
Linux Chapitre 1: Présentation Présentation du système Linux Pr. Baqach Adil 1 Linux Chapitre 1: Présentation Plan du cours Chapitre 1 : Présentation sur Linux Chapitre 2 : Commandes de bases Chapitre 3 : Droits d'accès aux fichiers Chapitre 4 : Redirections des E/S Chapitre 5 : Gestion des processus Chapitre 6 : Introduction à la programmation shell 2 Linux Chapitre 1: Présentation Ce cours va…. Fournir un concept de base pour les utilisateurs familiers avec lINUX / UNIX. Familiarisez-vous avec les commandes Linux. 3 Linux Chapitre 1: Présentation Système d’exploitation ▪ Un système d'exploitation (SE), souvent abrégé en OS (Operating System en anglais), est un logiciel essentiel qui gère les ressources matérielles et permet l'exécution d'autres programmes sur un ordinateur ou un appareil informatique ▪ C’est l’interface entre l’utilisateur et le matériel. ▪ Ses fonctions principales sont: ⮚ Contrôle des ressources matérielles ⮚ Gestion des fichiers ⮚ Contrôle des processus ⮚ Contrôle des périphériques ⮚ Interface utilisateur ▪ C'est le logiciel de base qui contrôle et coordonne toutes les activités d'un ordinateur pour permettre aux utilisateurs d'interagir avec l'ordinateur et d'exécuter des programmes. 4 Linux Chapitre 1: Présentation Historique de LUNIX Unix est né aux laboratoires Bell (Filiale d’ATT) développé en assembleur à partir de 1969 par Ken Thompson et Dennis Ritchie. En 1973, Unix est réécrit à 90% en langage C (Créé pour l’occasion par Brian kernighan) Actuellement, Unix est un système d’exploitation des stations de travail et des serveurs de base de données (utilisé sur de plus en plus de plateformes grâce au développement des Unix « Libres » Fournisseurs : Digital Equipement, Hewlett Packard, IBM, Silicon Graphics, Sun Microsystems + tous les Unix « Libres » (Linux, OpenBSD, FreeBSD,…) Concurrents : Windows (Microsoft), Mac OS 5 Linux Chapitre 1: Présentation Historique de LUNIX Fin des années 60 aux années 1980 Unix est le résultat de Bell Labs Recherche (Dennis Ritchie, Brian Kerningham, Ken Thompson, et coll.). Écrit à l'origine en langue assembleur. Unics (Unix) a été nommé en contraste au système d’exploitation Multics du MIT. Berkeley Software Distribution (BSD) ou Berkeley Unix dérivé de Bell Le travail des laboratoires est dû en partie au gouvernement les accords de monopole. Unix a conduit à la famille BSD de les systèmes d’exploitation dans les années 1990. 6 Linux Chapitre 1: Présentation Historique de LUNIX Richard Stallman, en 1983 Démarrage de GNU (GNU’s Not Unix !) projet Versions open source de la suite standard des utilitaires Unix trouvés dans BSD GNU est également une licence logicielle permettant pour les modifications de code tant que partagé Utilitaires utilisés sous Linux, dérivés de BSD et systèmes d'exploitation Unix propriétaires GNU n’a pas de noyau Toutes les commandes de cette leçon proviennent de GNU 7 Linux Chapitre 1: Présentation Historique de LINUX Linus Torvalds, in 1991 A publié la première version de son noyau Linux A commencé par une étude sur les architectures de processeurs à l'Université d'Helsinki, en Finlande, et à ce jour, il fait toujours autorité sur ce qui se passe. inclus dans le noyau Linux En 1992, il adopte la licence GNU et rassemble rapidement les développeurs Combinaison de la suite d'utilitaires GNU avec un nouveau noyau de système d'exploitation (GNU/LINUX) 8 Linux Chapitre 1: Présentation Historique d’UNIX Au milieu des années 1990/début des années 2000 GNU/Linux commence à être adopté par le grand public, en particulier dans les cercles de recherche et universitaires en raison de similitudes structurelles avec Unix et BSD. Gagne une part de marché importante des serveurs commerciaux. Devient utilisable pour l’adoption sur ordinateur de bureau (Desktop) Présent sur les gadgets ( les smartphones Android, les routeurs domestiques, les systèmes d'information automobiles…) 9 Linux Chapitre 1: Présentation Les Distributions Linux 10 Linux Chapitre 1: Présentation Caractéristiques de LUNIX LINUX est un Système d’exploitation : opensource multi-utilisateurs multi-tâches multi-plate-formes (c'est-à-dire portable) : IBM, SUN, HP, IRIX… et maintenant sur PC avec Linux. Gère la répartition des ressources (mémoire et espace disque) orienté réseau ( NFS, Rsync, SSH…) très utilisé en développement et en recherche très stable sécurisé 11 Linux Chapitre 1: Présentation Concepts Le Noyau : (Kernel ) Le « noyau » du système d'exploitation est le logiciel de base utilisé pour « communiquer » avec le matériel informatique Système de pilotes modulaire et central utilisé pour créer un environnement standardisé qui sert comme interface avec le matériel Gestionnaire de ressources pour allouer de la mémoire et du temps aux processus systèmes et utilisateur et interaction avec les fichiers (I/O) 14 Linux Chapitre 1: Présentation Concepts Lors de la connexion de l'utilisateur, le Le Shell: (Shell) système exécute un shell Un shell est l'environnement dans lequel vous serez en interface avec le noyau via commandes Il détermine la syntaxe des opérations complexes de de ligne de commande et shell écriture de scripts Le shell que vous utilisez s'appelle « bash », le successeur du vénérable « Bourne Shell » appelé "sh" BASH: “ Bourne Again Shell Le nom "Bourne Again" fait un jeu de mots avec Bourne Shell (sh), tout en faisant référence à un "nouveau départ" ou une "renaissance" de ce shell classique. 15 Linux Chapitre 1: Présentation Architecture Linux Divisée en 3 couches distinctes ✔ La couche physique : Périphériques et BIOS ✔ La couche système : Gérée par le noyau ✔ La couche interface : le Shell et/ou le système X- Window X-Window Couche interface Shell Couche système Noyau (Kernel) BIOS Couche physique Périphériques 16 Linux Chapitre 1: Présentation Système de fichier ▪ En UNIX, tout est soit un fichier soit un processus: les fichiers dits normaux ✔ fichiers textes ✔ fichiers exécutables les répertoires les fichiers de périphériques ▪ Chaque fichier possède un "i-node (index node)" : moyen pour Unix de stocker les caractéristiques du fichier ( emplacement, nom du propriétaire, droits, taille, date de création et de dernière modification) 17 Linux Chapitre 1: Présentation L'arborescence Linux ▪ Qu’est-ce qu’un système de fichier ? Organisation physique des données sur un support ✔ Sur un disque dur, une clé USB, un DVD, … ▪ Qu’est-ce qu’une arborescence ? Organisation logique des fichiers sur un ou plusieurs systèmes de fichiers Il s’agit d’une structure de données hiérarchique de type arbre Racine de Fichier samba l’arborescence etc apache2 httpd.conf / oumayma home zakaria Répertoire Sous-Répertoire 18 Linux Chapitre 1: Présentation L'arborescence Linux ▪ Voici l’arborescence typique d’un système Linux : etc Fichiers de configuration bin Commandes principales disponibles pour tous Racine du boot Fichiers de démarrage du système contenant le noyau système dev Point d’entrée vers les périphériques / home Répertoires personnels des utilisateurs root Répertoire personnel du super-utilisateur usr Logiciels et librairies supplémentaires var Journaux systèmes (log) proc Système de fichiers virtuel (VFS) contenant des infos sur les processus en cours d’exécution 19 Linux Chapitre 1: Présentation Les symboles associés à l’arborescence ▪ Différents symboles sont utilisés pour désigner des répertoires Le «. » : Répertoire courant Le «.. » : Répertoire parent Le « ~ » : Répertoire personnel de l’utilisateur courant ▪ La commande « cd » permet de changer de répertoire ▪ La commande « ls » permet de lister un répertoire ▪ La commande « pwd » permet de connaître le rép. courant ▪ Exemples : Je suis dans mon rep. perso Je vais dans /etc/apache2 root@localhost:~# cd /etc/apache2 root@localhost:/etc/apache2 # cd.. Je vais dans le rép parent (/etc) root@localhost:/etc # ls. root@localhost:/etc # cd ~ Je liste le rép. courant (/etc) root@localhost:~ # pwd /root Je retourne dans mon rép perso Où suis-je ? 20 Linux Chapitre 1: Présentation Les Utilisateurs ▪ Unix est multi-utilisateurs nécessité d'avoir un nom particulier aux yeux du système ("login") ainsi qu'un mot de passe pour la sécurité ▪ 2 types d'utilisateurs l'utilisateur "root" : super utilisateur -> possède tous les droits sur la machine les autres utilisateurs (possèdent des droits restreints) ▪ Chaque utilisateur est caractérisé par : un nom ("login") et un numéro d'utilisateur ("UID") un groupe et un numéro de groupe ("GID") un mot de passe ("passwd") un type de shell (= intérpréteur de commandes) un répertoire utilisateur qui lui appartient ("home directory") (Rq : toutes ces informations sont stockées dans le fichier /etc/passwd) 21 Linux Chapitre 1: Présentation Compte Linux Pour accéder à un système Linux, vous devez avoir un compte Un compte Linux comprend les éléments suivants Un compte Linux inclus: username and password uid et gid un répertoire personnel ( home directory) , où vous êtes placé par par défaut lorsque vous vous connectez un shell par défaut 22 Linux Chapitre 1: Présentation Première Connexion La session d'utilisateur Saisie du mot de passe type de session X (GNOME ou KDE) 23 Linux Chapitre 1: Présentation L'environnement X-Windows On arrive sous l'environnement X-Windows (KDE ou gnome = interface graphique rendant l'interaction avec le système plus conviviale) : Ouverture d'un shell bureau Bouton de barre de tâches menu 24 Linux Chapitre 1: Présentation Déconnexion de la session X-Windows Nécessité de se déconnecter à la fin d'une session (pour des raisons de sécurité) 25 Linux Chapitre 1: Présentation Notion de shell ▪ Le shell est un interpréteur de commandes Permet à l’utilisateur d’interagir avec le système Il lit et exécute les commandes de l’utilisateur ▪ C’est aussi un véritable langage de programmation Il sera possible d’écrire des scripts exécutant des commandes répétitives ▪ Il en existe plusieurs Le shell « bash » est le plus courant Mais aussi les shells « csh », « ksh », « tcsh » Contexte root@localhost:~# pwd Commande à exécuter Résultat de la /root commande root@localhost:~# 26 Linux Chapitre 1: Présentation Notion de shell (2) ▪ Ouverture du shell (sous X-Window) : cliquer sur l'icône représentant le shell, ou sélectionner «ouvrir un terminal» dans le menu droit de la souris ▪ A ce point le shell peut recevoir des commandes : exemples : ✔ date : affiche la date ✔ ls : liste les fichiers du répertoire courant ▪ Fermeture du shell : commande exit commande logout Ctrl-D 27 Linux Chapitre 1: Présentation Syntaxe générale des commandes UNIX ▪ syntaxe générale : $ commande options arguments Exemple : ls -al les options (souvent très nombreuses) permettent de modifier le comportement de la commande; en général elles sont précédées du signe '-' (e.g. ls -l) Certaines commandes utilisent des arguments (e.g. nom de fichier) il y a un manuel en ligne: man ls ▪ IMPORTANT : Unix est sensible à la casse ( a != A): ls != LS ou de Ls Unix utilise l'espace comme séparateur de commandes 28 29 Linux Chapitre 1: Présentation Quelques commandes de base ▪ more fichier : affiche le contenu de fichier page par page utiliser la touche espace pour passer à la page suivante utiliser la touche b pour revenir à la page précédente utiliser la touche q pour quitter ▪ ls : affiche la liste des fichiers ▪ cd : change de répertoire ▪ rm : supprime un fichier ▪ mv : Change le nom d’un fichier, déplace un fichier ▪ vi : édite un fichier ▪ man commande : affiche les pages de manuel de commande (utilise les mêmes touches que more pour se déplacer le long des pages) ▪ date : affiche la date 30 Linux Chapitre 1: Présentation Quelques commandes de base (2) pwd : Afficher le répertoire courant mkdir : Créer un répertoire rmdir : Supprimer un répertoire cp : Copier des fichiers dans un répertoire du : Afficher la taille d’une arborescence find : Rechercher de fichier dans une arborescence 31 Linux Chapitre 1: Présentation La commande ls ▪ Syntaxe $ ls [Option…] [(Chemin | Fichier)…] ▪ Principales options ▪ ls -m : Affiche les fichiers en les séparant par une virgule au lieu de les présenter en colonnes. ▪ ls -t : Affiche les fichiers par date, c'est-à-dire en les classant du récent au plus ancien. ▪ ls -lu : Affiche les fichiers par date de dernier accès et indique cette date. ▪ ls -F : Affiche les fichiers par type. Ainsi un fichier suivi d'un slash (/) est un répertoire, un fichier suivi d'une étoile est un fichier exécutable et un fichier suivi d'un "@" est un lien (nous reviendrons sur les liens dans la section consacrée à ln). ▪ ls -S : Affiche les fichiers triés par ordre de taille décroissante. ▪ ls -X : Affiche les fichiers par type d'extension. ▪ ls -r : Affiche les fichier en ordre alphabétique inverse. 32 Linux Chapitre 1: Présentation La commande cp ▪ Syntaxe $ cp [Option…] Fichier1 Rep_Dest ▪ Principales options ▪ cp -i: Avertit de l'existence d'un fichier du même nom et demande s'il peut le remplacer ou non. ▪ cp -l: Permet de faire un lien en "dur" entre le fichier source et sa copie ▪ cp -s: Permet de faire un lien "symbolique" entre le fichier source et sa copie ▪ cp -p: Permet lors de la copie de préserver toutes les informations concernant le fichier. ▪ cp -r: Permet de copier de manière récursive l'ensemble d'un répertoire et de ses sous répertoires 33 Linux Chapitre 1: Présentation La commande mv ▪ Syntaxe $ mv [Option…] Fichier1 Répertoire ▪ mv -b: Va effectuer une sauvegarde des fichiers avant de les déplacer ▪ mv -i: Demande pour chaque fichier et chaque répertoire s'il peut ou non le déplacer ▪ mv -u: Demande a "mv" de ne pas supprimer le fichier si la date de modification est la même ou plus récente que son remplaçant. 34 Linux Chapitre 1: Présentation La commande rm ▪ Syntaxe $ rm [Option…] Fichier1 Fichier2 ▪ Principales options ▪ rm -i : demander à l’utilisateur la confirmation avant la suppression des fichiers. ▪ rm -r: Permet de supprimer un répertoire et ses sous répertoires. ▪ rm -f: Permet de supprimer les fichiers protégés en écriture et répertoires sans confirmation. 35 Linux Chapitre 1: Présentation La commande mkdir ▪ Syntaxe $ mkdir répertoire …. La commande mkdir crée les répertoires qui sont fournis en argument. Les sous répertoires qui peuvent figurer dans le chemin d’accès à un répertoire à créer doivent exister, sinon la commande échoue. $ mkdir –p répertoire/sous-répertoire ….. rep1 rep11 rep12 rep110 rep120 repp121 36 Linux Chapitre 1: Présentation La commande rmdir ▪ Syntaxe $ rmdir [-p] répertoire …. La commande rmdir supprime les répertoires qui sont fournis en arguments , à condition qu’ils soient vides. Avec l’option –p, les sous répertoires qui peuvent figurer dans le chemin d’accès à un répertoire sont eux aussi détruits s’ils sont vides, après que le répertoire terminal ait été détruit. 37 Linux Chapitre 1: Présentation La commande ln ▪ Syntaxe $ ln [-s] fichier 1 fichier2 La commande ln permet de créer des entrées multiples dans l’arborescence d’un système de fichiers pour un même fichier physique. Ce qui revient à dire que si l’on modifier, ses liens le sont aussi. ▪ L’option –s permet de faire des lien symbolique ▪ Un petit dessin : support de stockage support de stockage 0110001111 0110001111 fich1 0101010110 fich1 0101010110 0101010010 0101010010 0001010101 0001010101 fich2 0… fich2 0… liens physiques lien symbolique 38 Linux Chapitre 1: Présentation Caractères spéciaux ▪ Certains caractères ont une signification particulière Interprétés par le shell ▪ Astérisque ou étoile : * Interprété comme toute suite de caractères alphanumérique Exemple : Effacer tous les fichiers commençant par « rapport » rm rapport* ▪ Point d’interrogation : ? Interprété comme un seul caractère alphanumérique Exemple : Effacer certains fichiers commençant par « rapport?.doc » rm rapport?.doc « rapport1.doc » sera effacé mais pas « rapport12.doc » ▪ Point virgule : ; Séparateur de commandes cp bilan.txt bilan2007.txt ; rm bilan.txt 39 Linux Chapitre 1: Présentation Caractères spéciaux (2) ▪ Les crochets : [] Remplace un caractère choisi parmi ceux énumérés entre les crochets Exemple : Effacer les fichiers dont la 1ère lettre est « a » ou « b » et se terminant par «.txt » rm [ab]*.txt « args1.txt » et « bilan.txt » seront effacés mais pas « comment.txt » rm rapport[0-9].txt Exemple : Effacer les fichiers numérotés de 10 à 29 « rapport12.txt » mais pas « rapport3.txt » ▪ L’espace Utilisé comme séparateur de paramètres pour une commande Exemple : Effacement de 2 fichiers passés en paramètres rm rapport.doc rapport2008.txt 40 Linux Chapitre 1: Présentation TP1 41 Linux Chapitre 2: Les commandes de base (Suite) Les commandes de base (Suite) 42 Linux Chapitre 2: Les commandes de bases (Suite) La commande grep ▪ Syntaxe $ grep [options] MOTIF [FICHIERS...] grep recherche un motif dans un fichier ▪ Le motif peut être une expression régulière : Une « expression régulière » est une chaîne de texte qui décrit un modèle de recherche spécifique. 43 Linux Chapitre 2: Les commandes de bases (Suite) Les expressions régulieres ER Description. Un seul caractère ^ correspondre le début d'une ligne $ correspondre la fin d'une ligne * correspondre le caractère précédent zéro ou plusieurs fois [] correspondre exactement un caractère dans une liste de caractères ex [abc] [^] correspond exactement à un caractère qui ne figure pas dans la liste de caractères [] 44 Linux Chapitre 2: Les commandes de bases (Suite) La commande grep ▪ Options de grep : ▪ grep -i : Ignorer la casse ▪ grep -c : Compte le nombre de lignes contenant la chaîne ▪ grep -n :Afficher le numéro des lignes ou le motif a été trouvé ▪ grep -l :afficher le nom du fichier qui correspond au modèle plutôt que d'afficher chaque ligne du fichier ▪ grep -R, -r, --recursive : tous les fichiers dans l’arborescence ▪ grep -v : affiche les lignes ne contenant pas la chaîne ▪ grep -w : correspondre à la chaîne exacte ▪ grep –e : spécifier plusieurs chaînes ( grep –e ch1 –e chaine2 file) 45 Linux Chapitre 2: Les commandes de bases (Suite) Application grep ▪ Exercice : Créer un répertoire test-grep dans votre home directory Dans test-grep créer le fichier textfile.txt avec la commande cat et le contenu ci-dessous: cat > testfile.txt …. CTR+D pour sauvegarder unix is great os. unix was developed in Bell labs. learn operating system. Unix linux which one you choose uNix is easy to learn.unix is a multi-user os.Learn unix.unix is powerful Q1- Chercher les lignes contenant les mots “UNIX”, “Unix”, “unix” et “uNix” Q2- Chercher le nombre de lignes (count) contenant le mot unix. Q3- Chercher les lignes correspondant le mot entier unix. Q4 - Afficher uniquement la chaîne correspondante unix ( option -o ), pas toute la ligne Q5- Rechercher les lignes contenant la chaîne unix en affichant le numéro de lignes Q6 - Afficher les lignes ne contenant pas le mots unix Q7 - Afficher les lignes qui commencent avec le mot unix Q8 - Afficher les lignes qui se terminent avec le mot se 46 Linux Chapitre 2: Les commandes de bases (Suite) La commande sort sort : permet de trier par ordre alphabétique les lignes d'un fichier. ▪ Principales options ▪ sort -b : Ignorer les blancs en début de ligne pendant la recherche de la clé de tri sur chaque ligne. ▪ sort -d : (pour "dictionary order") trie uniquement en fonction des lettres, des chiffres, des espaces et ignore les autres caractères (comme #, @, !, etc.). ▪ sort -f : Considérer les minuscules comme leur équivalent en majuscule pendant le tri. Ainsi `b' est trié de manière équivalente a `B'. ▪ sort –n : tri numérique ▪ sort -u : enlève les lignes dupliquées ▪ sort –k: trier en fonction d’une colonne spécifique 47 Linux Chapitre 2: Les commandes de bases (Suite) La commande sort ▪ Exercice ▪ Trier le premier champ (username) du fichier /etc/passwd ▪ Trier le fichier /etc/passwd par ordre décroissant de UID (3eme champ) ▪ Même questions en éliminant les doublons 48 Linux Chapitre 2: Les commandes de bases (Suite) La commande head head : afficher les premières lignes d’un fichier texte (sans option les 10 premières lignes ) ▪ Principales options ▪ head -n N, --lines N :Afficher les N premières lignes. ▪ head -q, --quiet, --silent : Ne pas afficher les en-têtes mentionnant les noms de fichiers. ▪ head -v, --verbose : Toujours afficher les en-têtes mentionnant les noms de fichiers. 49 Linux Chapitre 2: Les commandes de bases (Suite) La commande tail tail : afficher les dernières lignes d’un fichier texte ( sans option affiche les 10 dernières lignes) ▪ Principales options ▪ tail -n N, --lines N : Afficher les N dernières lignes. ▪ tail -q, --quiet, --silent : Ne jamais afficher l'en-tête avec le nom du fichier ▪ tail -v, --verbose : Toujours afficher l'en-tête avec le nom du fichier ▪ tail -F ( Follow) : suivre le fichier en temps réel. 50 Linux Chapitre 2: Les commandes de bases (Suite) La commande diff ▪ Syntaxe $ diff options file1.txt file2.txt permet de comparer deux fichiers ▪ Principales options ▪ diff -a : Traiter tous les fichiers comme du texte, et les comparer ligne-à-ligne, même s'ils semblent contenir des données binaires. ▪ diff -b : Ne pas tenir compte des différences concernant des espaces blancs. ▪ diff --brief : Indiquer seulement si les fichiers diffèrent, pas les différences elles-mêmes. ▪ diff -u : Comparez les fichiers, en montrant les différences dans le format unifié (tel qu'utilisé par git diff) ▪ diff -y :Comparez les fichiers en affichant les différences côte à côte 51 Linux Chapitre 2: Les commandes de bases (Suite) La commande diff ▪ Exercice (DL) 1- Ecrire un simple programme (Hello word) en c. : nommé prog1.c 2. Créer une copie de prog1.c nommé prog2.c 3. Modifier prog2.c ( par ex. Ajouter une ligne au début et supprimer une ligne de code. ) 4. Utiliser diff avec l’option convenable pour générer un fichier prog.diff 5. utiliser la commande patch pour changer prog2.c pour qu’il soit identique a prog1.c 6. Appliquer le patch inverse 52 Linux Chapitre 2: Les commandes de bases (Suite) La commande Find ▪ Syntaxe : $ find Rechercher un fichier dans une hiérarchie de répertoires. ▪ Principales options ▪ -name : recherche sur le nom du fichier. ▪ -perm : recherche sur les droits d'accès du fichier. ▪ -links : recherche sur le nombre de liens du fichier. ▪ -user : recherche sur le propriétaire du fichier. ▪ -group : recherche sur le groupe auquel appartient le fichier. 53 Linux Chapitre 2: Les commandes de bases (Suite) La commande Find ▪ Syntaxe : $ find ▪ Principales options ▪ -type : Recherche un type de fichier spécifique (f pour fichier, d pour répertoire). ▪ -size : Recherche un fichier de taille spécifique. ▪ -mtime : Recherche les fichiers modifiés à une date spécifique. ▪ -exec : Exécute une commande sur les fichiers trouvés. 54 Linux Chapitre 2: Les commandes de bases (Suite) La commande Find (suite) ▪ -type : recherche sur le type (d=répertoire, c=caractère, f=fichier normal). ▪ -size : recherche sur la taille du fichier en nombre de blocs (1 bloc=512octets). ▪ -atime : recherche par date de dernier accès en lecture du fichier. ▪ -mtime : recherche par date de dernière modification du fichier. ▪ -ctime : recherche par date de création du fichier. 55 Linux Chapitre 2: Les commandes de bases (Suite) La commande Find (suite) Après la recherche d’un fichier avec find , on peut exécuter des actions sur ce fichiers : voici quelques actions qu’on peut utiliser : -delete : supprimer tous les fichiers qui correspond : Ex. find /tmp –name “*.tmp” –delete -exec : exécuter une commande sur chaque fichier trouvé -ls : lister les détails sur chaque fichier. -ok : comme -exec mais demande une confirmation. 56 Linux Chapitre 2: Les commandes de bases (Suite) Exemples 57 Linux Chapitre 2: Les commandes de bases (Suite) Exemples(2) 58 Linux Chapitre 2: Les commandes de bases (Suite) Exemples(2) 59 Linux Chapitre 2: Les commandes de bases (Suite) Application find ▪ Exercice: 1. chercher les fichiers vides dans votre home et les supprimer 2. Localisez et répertoriez tous les fichiers texte (fichiers avec l'extension.txt) dans le répertoire actuel et ses sous-répertoires. 3. Identifiez et répertoriez tous les fichiers modifiés au cours des 7 derniers jours dans un répertoire spécifique. 4. Recherchez et répertoriez tous les répertoires (dossiers) dans le répertoire de l'utilisateur. 5. Localisez et répertoriez tous les fichiers exécutables dans un répertoire particulier et ses sous-répertoires. 6. Trouvez un fichier nommé "exemple.txt" dans l'ensemble du système de fichiers, en lançant la recherche à partir du répertoire racine / 7. Cherche tous les fichiers dépassant 100 Mo et les supprimer avec confirmation 61 Linux Chapitre 2: Les commandes de bases (Suite) TP TP2 - ici 62 Linux Chapitre 3: Droits d’accès aux fichiers Droits d’accès aux fichiers 63 Linux Chapitre 3: Droits d’accès aux fichiers Les droits des fichiers et répertoires Chaque fichier (ou répertoire) possède un ensemble d'attributs définissant les droits d'accès à ce fichier pour tous les utilisateurs du système. ▪ Classes d'utilisateurs Il existe 3 classes d'utilisateurs pouvant éventuellement accéder à un fichier : ▪ le propriétaire du fichier (User) ▪ le groupe dans lequel appartient le propriétaire (Group) ▪ les autres (Others). A sa création, un fichier appartient à son auteur. Le propriétaire du fichier peut ensuite distribuer ou restreindre les droits d'accès sur ce fichier. 64 Linux Chapitre 3: Droits d’accès aux fichiers Les droits des fichiers et répertoires (1) ▪Types d'accès : Pour chaque classe d'utilisateurs, il y a 3 types d'accès à un fichier donné : ▪ r : en lecture (Read). ▪ w : en écriture (Write). ▪ x : en exécution (eXecute). Au niveau répertoire, ces droits signifient : ▪ droit de lister les fichiers présents dans ce répertoire (Read). ▪ droit de créer ou de détruire un fichier qui s'y trouve (Write). ▪ droit de traverser ce répertoire (eXecute). 65 Linux Chapitre 3: Droits d’accès aux fichiers Les droits des fichiers et répertoires (2) La commande « ls -l» permet d’afficher les droits qui s’appliquent root@localhost:/home/abqx/Documents# ls -l total 20 -rw-r--r-- 1 abqx abqx 0 2008-08-15 14:42 projet.txt -rw-rw-r-x 1 abqx info 7406 2008-08-15 14:44 rapport2006.ods -rw-rw-r-- 1 abqx abqx 7363 2008-08-15 14:44 rapport-activite.odt -rw-rwxr-x 1 abqx abqx 255 2008-08-15 14:52 script.sh Groupe Appartenance Nom du fichier Taille propriétaire rw- rwx r-x mohamed info 255 2008-08-15 14:52 script.sh propriétaire autres Utilisateur Groupe Date/heure modif propriétaire propriétaire DROITS Propriétaire : Lecture, écriture Groupe : Lecture, écriture et exécution Autres : Lecture et exécution 66 Linux Chapitre 3: Droits d’accès aux fichiers Modifier les droits avec « chmod » La commande « chmod » permet de modifier les droits : – 2 syntaxes : chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... 67 Linux Chapitre 3: Droits d’accès aux fichiers Modifier les droits avec « chmod » Mode symbolique : – Basé sur des symboles (ugoa) et des opérateurs (+,-,=) – u (user), g (group), o (others), a (all users) – + (Ajouter le droit), - (Retirer le droit), = (Ajouter le droit et retirer tous les autres) – Exemple (Ajouter le droit d’exécution au propriétaire) : chmod u+x rapport.txt 68 Linux Chapitre 3: Droits d’accès aux fichiers Modifier les droits avec « chmod » Mode octal : – Basé sur des nombres de 0 à 7 – A chaque bit de la traduction binaire correspond un droit – Exemple ( rw- rw- r-- ) : chmod 664 rapport.txt 69 Linux Chapitre 3: Droits d’accès aux fichiers Mode octal de « chmod » Les droits sont représentés par un nombre octal (Base 8) ▪ De 0 à 7 La représentation binaire (base 2) donne le détail des droits ▪ Exemple : 6 5 4 Propriétaire : Lecture, écriture 110 101 100 Groupe : Lecture et exécution Autres : Lecture seulement rw- r-x r-- Ce mode permet de modifier tous les droits en même temps ▪ A utiliser avec précaution ▪ Très efficace pour s’assurer que tous les fichiers ont les mêmes droits ▪ Utilisé pour sécuriser les accès des utilisateurs aux fichiers 70 Linux Chapitre 3: Droits d’accès aux fichiers Exemples d’utilisation de « chmod » Retirer le droit d’écriture au propriétaire et au groupe chmod u-w,g-w /home/abqx/secret.txt Positionner les droits en « rwx r-x --- » chmod 750 /home/abqx/secret.txt Ajouter le droit de lecture aux autres de tous les fichiers chmod o+r /home/abqx/* Retirer le droit d’écriture au groupe propriétaire – Pour tous les fichiers et répertoires d’un répertoire donné (Option R) chmod -R g-w /home/abqx/* Donner tous les droits à tout le monde (déconseillé) chmod 777 /home/abqx/secret.txt 71 Linux Chapitre 3: Droits d’accès aux fichiers Changer les droits par défaut : umask ▪ Quand vous créez un fichier, par exemple avec la commande touch, ce fichier par défaut possède certains droits. ▪ Ce sont 666 pour un fichier (-rw-rw-rw-) et 777 pour un répertoire (drwxrwxrwx), ce sont les droits maximum. ▪ Vous pouvez faire en sorte de changer ces paramètres par défaut en utilisant La commande umask. 72 Linux Chapitre 3: Droits d’accès aux fichiers Changer les droits par défaut : umask (1) Pour un fichier : ▪ Si vous tapez umask 022, vous partez des droits maximum 666 et vous retranchez 022, on obtient donc 644, par défaut les fichiers auront comme droit 644 (-rw-r--r--). ▪ Si vous tapez umask 244, vous partez des droits maximum 666 et vous retranchez 244, on obtient donc 422, par défaut les fichiers auront comme droit 422 (-r---w--w-). 73 Linux Chapitre 3: Droits d’accès aux fichiers Changer les droits par défaut : umask (2) Pour un répertoire : ▪ Si vous tapez umask 022, vous partez des droits maximum 777 et vous retranchez 022, on obtient donc 755, par défaut les répertoires auront comme droit 755 (drwxr-xr-x). ▪ Si vous tapez umask 244, vous partez des droits maximum 777 et vous retranchez 244, on obtient donc 533, par défaut les répertoires auront comme droit 533 (drwx-wx-wx). umask n'est utilisable que si on est propriétaire du fichier. 74 Linux Chapitre 3: Droits d’accès aux fichiers Notion d'utilisateur et de groupe utilisateur : personne autorisée a se connecter sur le système. ❖ son accès est autorisé après identification : ▪ par son nom d'utilisateur (username ou login). ▪ par son mot de passe associe (password). ❖ il dispose d'une zone privée sur le disque, généralement située dans /home/username ou dans /users/username sur laquelle il a tous les droits. ❖ la taille de cette zone privée (i.e. le nombre d'octets qu'il est possible d'y stocker) peut être restreinte a un quota. ❖ il est identité par un numéro unique ou UID (User IDentication number). ❖ il appartient a un ou plusieurs groupes (mais un groupe dans lequel il est par défaut). 75 Linux Chapitre 3: Droits d’accès aux fichiers Notion d'utilisateur et de groupe (1) groupe : ensemble de personnes ou de groupes. ❖ les groupes sont utilisés pour contrôler les accès au sein du système. ❖ le changement de groupe est (éventuellement) contrôlé par un mot de passe. ❖ il est géré par un administrateur spécifique au groupe (ou par défaut le super-utilisateur). ❖ il est identité par un numéro unique ou GID (Group IDentication number). 76 Linux Chapitre 3: Droits d’accès aux fichiers Notion d'utilisateur et de groupe (2) Fichiers de description des utilisateurs et des groupes ❖ /etc/passwd pour les utilisateurs ❖ /etc/group pour les groupes 77 Linux Chapitre 3: Droits d’accès aux fichiers Commandes pour utilisateurs et groupes ▪ id : affiche les informations d'identification de l'utilisateur. ▪ whoami : affiche le nom de l'utilisateur. ▪ users : affiche les noms de tous les utilisateurs connectes sur le système. ▪ who : comme users mais avec plus d'informations. ▪ passwd : change le mot de passe actuel. ▪ groups : affiche les groupes auxquels l'utilisateur appartient. ▪ newgrp groupname : changement de groupe. ▪ su username : changement d'identité de l'utilisateur. ▪ lastlog : date de la dernière connection. 78 Linux Chapitre 3: Droits d’accès aux fichiers Changer le propriétaire et le groupe (1) ❖ Vous pouvez " donner " un fichier vous appartenant à un autre utilisateur, c'est à dire qu'il deviendra propriétaire du fichier, et que vous n'aurez plus que les droits que le nouveau propriétaire voudra bien vous donner sur le fichier. ❖ Syntaxe : $ chown nouveau-propriétaire nom-fichier 79 Linux Chapitre 3: Droits d’accès aux fichiers Changer le propriétaire et le groupe (1) ❖ Dans le même ordre d'idée vous pouvez changer le groupe. ❖ Syntaxe : $ chgrp nouveau-groupe nom-fichier (Ces deux commandes ne sont utilisables que si on est propriétaire du fichier.) 80 Linux Chapitre 4: Redirection des Entrées / Sorties Redirection des Entrées/Sorties 81 Linux Chapitre 4: Redirection des Entrées / Sorties Les entrées / sorties Il y a trois sortes d'entrées sorties ou flux de données : ❖ Le premier est l'entrée standard, c'est à dire ce que vous saisissez au clavier. ❖ Le deuxième est la sortie standard, c'est à dire l'écran, plus précisément le Shell. ❖ Le troisième est la sortie standard des messages d'erreurs consécutifs à une commande, qui est généralement l'écran. 82 Linux Chapitre 4: Redirection des Entrées / Sorties Les entrées / sorties (2) Il est possible de rediriger les flux (en général vers ou depuis un fichier) : < : redirection de l'entrée standard > : redirection de la sortie standard >> : redirection de la sortie standard à la fin d'un fichier Exemple : ❖ ls -l /etc > tmp : redirection de stdout dans le fichier tmp (si tmp existe, il est écrasé) ❖ ls -l /bin >> tmp : redirection de stdout à la fin du fichier tmp (le fichier tmp n'est pas écrasé) ❖ cat < tmp : redirection de l'entrée standard depuis le fichier tmp 83 Linux Chapitre 4: Redirection des Entrées / Sorties Redirection des erreurs Par défaut les messages d'erreur s'affichent à l'écran (sortie standard par défaut), vous pouvez modifier ce comportement. On rappelle que la sortie d'erreur a pour code 2. Vous pouvez sauvegarder dans un fichier vos messages d'erreur, pour analyse ultérieure, en tapant : cat mon-fichier 2> fichier-erreur ou cat mon-fichier >& fichier-erreur 84 Linux Chapitre 4: Redirection des Entrées / Sorties Les tubes (pipes) Un pipe (en français tube de communication) permet de rediriger la sortie d'une commande vers une autre. En d'autres termes, pour rediriger les résultats (la sortie) d'une commande, on a vu qu'on pouvait taper : commande1 > sortie1 On redirige cette sortie vers une autre commande, ça devient donc une entrée pour cette dernière commande, pour cela vous tapez : commande2 < sortie1 85 Linux Chapitre 4: Redirection des Entrées / Sorties Les pipes (2) Il s’agit de rediriger la sortie d’une commande vers l’entrée d’une autre avec l’opérateur « | » stdin stdout stdin stdout commande1 commande2 Élaborer des commandes complexes en une seule ligne – Exemple : Filtrer le résultat de la commande « ls » avec « grep » ls –l /etc | grep ‘mp3’ On obtient la liste des fichiers contenant « mp3 » stdin stdout stdin stdout ls -l grep mp3 root@localhost:~ # ls –l /etc | grep ‘mp3’ -rw-r--r-- 1 root root 0 2008-08-27 15:16 morceau1.mp3 -rw-r--r-- 1 root root 0 2008-08-27 15:16 morceau2.mp3 -rw-r--r-- 1 root root 0 2008-08-27 15:16 morceau3.mp3 -rw-r--r-- 1 root root 0 2008-08-27 15:16 morceau4.mp3 86 Linux Chapitre 4: Redirection des Entrées / Sorties La commande tr tr [options] chaine1 chaine2 tr = Transposer ou éliminer des caractères substitution ou suppression de caractères sélectionnés. Un caractère appartenant à chaine1 est remplacé par le caractère de même position dans chaine2. Options principales: -d : suppression des caractères sélectionnés -s : ‘aaaaa’ dans chaine1 -> ‘a’ dans chaine2 -c : remplace chaine1 par son complément (tous les caractères n’appartenant pas à chaine1) ❖ Format des expressions de chaine : [a-z] = segment de 26 caractères allant de ‘a’ à ‘z’ [a*n] = a……a (n fois) \xyz = désigne le caractère de code octal xyz ‘[: lower :]’ = lettre minuscule ‘[: upper :]’ = lettre majuscule 87 Linux Chapitre 4: Redirection des Entrées / Sorties Exemple 88 Linux Chapitre 4: Redirection des Entrées / Sorties La commande uniq uniq [options] fichier Élimine les lignes dupliquées dans un fichier trié par défaut. Options principales: -d : affiche seulement les lignes dupliquées -u : affiche seulement les lignes non dupliquées (par défaut) -c : donne le nombre d’exemplaires de chaque ligne $ cat fichier $ cat fichier | uniq $ cat fichier | uniq -d un un deux deux deux quatre deux trois $ trois quatre quatre cinq quatre $ cinq $ 89 Linux Chapitre 4: Redirection des Entrées / Sorties La commande cut cut [options] fichier Supprime une partie de chaque ligne d’un fichier par défaut : Options principales: -d separateur : le séparateur des champs -f listes de champs : les champs séparés. -c : Sélection sur le rang du caractère. -b : Sélection sur le no d’octet. -s (avec -f) : supprime les lignes vides et les lignes qui ne contient pas le sép. --complement (avec –f): affiche tous les champs sauf celui spécifié $ cat fichier | cut –d : -f 1,2 $ cat fichier 0: Casablanca 0: Casablanca : Maroc : 0522 1: Rabat 1: Rabat : Maroc : 0537 2: Fes 2: Fes : Maroc : 0535 3: Marrakech 3: Marrakech : 0524 $ $ 90 Linux Chapitre 4: Redirection des Entrées / Sorties La commande paste paste [options] fichier Regroupe les lignes du même n° de différents fichiers. $ cat fichier1 $ paste fichier1 fichier2 0 : Casablanca : 0 : Casablanca : Maroc : 22 1 : Rabat : 1 : Rabat : Maroc : 37 2 : Fes : 2 : Fes : Maroc : 35 Maroc : 24 : Maroc : 24 : 3 : Marrakech $ cat fichier2 Maroc : 22 Maroc : 37 Maroc : 35 3 : Marrakech 91 Linux Chapitre 4: Redirection des Entrées / Sorties TP TP 3 et 4 ici 92 Linux Chapitre 5: Gestion des processus Gestion des processus 93 Linux Chapitre 5: Gestion des processus Les processus Processus = objet dynamique qui représente un programme en cours d’exécution et son contexte Caractéristiques: ❖ identification (pid) ❖ identification du proc. parent (ppid) ❖ propriétaire ❖ priorité ❖... Pour voir les processus en cours: ps 94 Linux Chapitre 5: Gestion des processus Les processus Infos retournées par temps CPU utilisé ps: [abqx@vbox:~]# ps PID TTY STAT TIME COMMAND 3899 pts/0 Ss 0:00.08 /usr/bin/bash numéro de 4743 pts/0 R+ 0:00.14 ps processus commande exécutée état du R actif processus: T bloqué terminal P en attente de page associé D en attente de disque S endormi IW swappé Z tué 95 Linux Chapitre 5: Gestion des processus Les processus Foreground commande qui garde la main pendant son exécution. Utilise le clavier et l’écran. Background commande qui rend la main une fois le processus lancé. Celui-ci continue sans faire d’entrée/sortie au terminal. Commande & Lance un processus en background jobs Affiche les processus en background kill %job Termine un processus en background fg [%job] Mettre une commande en avant plan bg [%job] Mettre une commande en arrière plan 96 Linux Chapitre 5: Gestion des processus Les commandes de gestion des processus Options ps Affichage des processus en cours d’exécution Affichage des processus en liste complète Affichage de l’information pour tous les processus 1 2 3 4 5 6 7 8 1- identificateur du lanceur de processus 5- date de création du processus 2- identificateur du processus (PID) 6- terminal auquel la commande est rattaché 3- identificateur du processus père 7- quantité total du temps du CPU utilisé par le processus depuis son lancement 4- pourcentage du CPU utilisé 8- nom de la commande (processus) 97 Linux Chapitre 5: Gestion des processus Les commandes de gestion des processus Affichage remis à jour des processus en fonctionnement top 1 2 3 4 5 6 7 8 9 10 11 12 1- identificateur du processus (PID) 7- mémoire partagée avec d’autres processus 2- l’utilisateur qui exécute le processus 8- Etat du processus (S (endormis), D (qui ne peut 3- priorité du processus être interrompu par un signal), R (en cours d’exécution) 4- le nice du processus Z (zombie), ou T (bloqué) 5- Taille totale virtuelle utilisée par le processus 9- CPU utilisé en pourcentage (mémoire vive; mémoire vidéo; bibliothèque;…) 10- mémoire utilisée en pourcentage 6- quantité mémoire physique occupé par le processus 11- Temps total d’utilisation du processeur depuis le lancement du processus 12- nom de la commande ou du processus 98 Linux Chapitre 5: Gestion des processus Les commandes de gestion des processus Affichage remis à jour des processus en fonctionnement top Rappel de la commande TOP Heure actuelle du système Indique depuis combien de temps le système n’as pas redémarré Les utilisateurs ayant ouvert des sessions Nombre de processus (total/en cours d’exécution/endormis/stoppé/Zombie) Pourcentage CPU utilisé pour différents types de processus Informations sur la mémoire physique et virtuelle (totale/utilisée/libre) 99 Linux Chapitre 5: Gestion des processus Les commandes de gestion des processus Affichage des processus en arborescence pstree Affiche les processus en arborescence Affiche le PID des processus entre parenthèses Met en surbrillance la branche de la commande « pstree » Affiche les arguments de la commande des processus Désactive le regroupement des processus en une seule ligne Les processus du même niveau et issu de la même commande sont regroupés Désactivation du regroupement en une seule ligne par la commande « Pstree –c » 100 Linux Chapitre 5: Gestion des processus Les commandes de gestion des processus Envoie de signal à un processus Kill Dans un système Linux, tous les processus peuvent recevoir des messages, envoyés soit par l’utilisateur, soit par un autre processus, soit par le système. Ces messages sont appelés signaux, La plupart des signaux sont envoyés par le système pour indiquer au processus qu’il a fait une faute et qu’il va être terminé. Voici quelques signaux que peuvent lancer un utilisateur: Afficher la liste des signaux Terminer un processus OU Tuer un processus (utiliser ce signal au cas ou le processus plante) OU Stopper un processus Reprise d’exécution d’un processus suspendu 101 Linux Chapitre 5: Gestion des processus Les commandes de gestion des processus Envoie de signal à un processus en fonction de certains propriétés pkill Tuer les processus appartenant à l’utilisateur « user » Terminer le processus le plus récent Terminer les processus dont le nom correspond exactement au motif Terminer les processus appartenant à GUID « 501 » Terminer les processus lancés dans le terminal« TTY2 » Terminer l’ancien processus issu de la commande TOP Afficher l’ID des processus en fonction de certains critères pgrep Afficher l’ID des processus issu de la commande TOP Afficher l’ID des processus lancés dans le terminal « TTY2 » Afficher l’ID du plus ancien processus issu de la commande TOP 102 Linux Chapitre 5: Gestion des processus Les commandes de gestion des processus Lancer un programme avec une certaine er priorité nice Changer la priorité d’un processus en er cours d’exécution renice Changer la priorité des processus lancés Par l’utilisateur « user » 103 Linux Chapitre 5: Gestion des processus Les signaux 104 Linux Chapitre 6: Programmation Shell Programmation Shell 105 Linux Chapitre 6: Programmation Shell Le Shell ❖ Un Shell est un programme exécuté par le système, c’est un interpréteur de commandes qui : ▪ initialise l’environnement de l ’utilisateur ▪ affiche un prompt, lit et exécute les instructions tapée par l ’utilisateur ❖ quand une commande est tapée, le shell : ▪ interprète les variables les méta caractères ▪ gère les redirections et les tubes (« pipes ») ▪ interprète la commande ▪ exécute la commande 106 Linux Chapitre 6: Programmation Shell Le Shell (2) ❖ Il existe plusieurs shell, sur les systèmes de type Unix, dont les plus connus sont les suivants : ▪ Bash (le Bourne Again SHell). ▪ Sh (le bourne SHell) : Ce shell fut le premier présent dans les systèmes Unix et est à l'origine de tout les autres. ▪ Ksh (Korn SHell). ▪ Csh (le C SHell) : dont la syntaxe est inspirée du langage C). ▪ Tcsh (le Tenex C Shell) : C'est une évolution du Csh. ▪ Zsh (le Z Shell) : C'est un shell récent basé sur Bash, Ksh et Tcsh. 107 Linux Chapitre 6: Programmation Shell Les variables ❖ une variable du Shell est un nom associé à une valeur ❖ par défaut, toutes les variables sont initialisées à NULL (vide) ❖ certaines variables sont prédéfinies ❖ les utilisateurs peuvent définir et utiliser leurs propres variables 108 Linux Chapitre 6: Programmation Shell Les variables (2) 🞂 Quelques variables prédéfinies : ❖ HOME répertoire de login ❖ PATH répertoires à inspecter pour trouver les commandes tapées par l ’utilisateur ❖ TERM type du terminal ❖ PWD directory courante 109 Linux Chapitre 6: Programmation Shell Les variables (3) 🞂 Affectation des variables du shell : ❖ Syntaxe : NomDeLaVariable=value ❖ Exemples : abqx:~/tmp$ MY_NAME=adil abqx:~/tmp$ MESS=/usr/man/man1/ls.1 abqx:~/tmp$ var5="Bonjour tout le monde" 110 Linux Chapitre 6: Programmation Shell Les variables (4) 🞂 Renvoi de la valeur d ’une variable ❖ Syntaxe: $NomDeLaVariable ❖ Exemples: abqx:~/tmp$ echo $MY_NAME adil abqx:~/tmp$ echo $MESS /usr/man/man1/ls.1 abqw:~/tmp$ more $MESS 111 Linux Chapitre 6: Programmation Shell Les petits exemples $ V1=toto $ echo $V1 toto $ V2=’titi tutu’ $ echo $V2 titi tutu $ echo ’$V2’ $V2 $ echo "$V1 $V2" toto titi tutu $ V3="$V1 $V2 tata" $ echo $V3 toto titi tutu tata Attention à la différence entre "... " et ’... ’! 112 Linux Chapitre 6: Programmation Shell Parenthèse: substitution de commandes ❖ Stocker le résultat de l’appel à une commande dans une variable? $ msg="Je travaille dans $(pwd)" # ksh/bash-style $ echo $msg Je travaille dans /tmp... 113 Linux Chapitre 6: Programmation Shell Les scripts Shell ❖ Un script est un fichier contenant un ensemble de commandes exécutées séquentiellement ▪ Sous forme de fichier texte contenant des commandes ❖ Le script ne peut être exécuté que par un interpréteur ▪ « /bin/bash » pour le Bash ▪ « /bin/sh » pour le Sh ▪ « /bin/zsh » pour le Zsh ❖ Le langage de script Shell est un langage évolué offrant de nombreuses possibilités ▪ Boucles, variables, tests avec if, création de fonctions, … ❖ Dans quels cas utilise-t-on les scripts ? ▪ Pour effectuer un travail répétitif ▪ Pour des tâches d’administration système ▪ Pour installer des programmes ▪ Au démarrage du système pour démarrer les services et applis 114 Linux Chapitre 6: Programmation Shell Exécuter un script ❖ Pour exécuter le script, il faut appeler l’interpréteur mohamed@localhost:~ # bash monscript ❖ Possibilité de simplifier l’appel en ajoutant la ligne suivante en tête du script #!/bin/bash ▪ L’appel est alors plus simple root@localhost:~ #./monscript ❖ L’utilisateur courant doit posséder le droit « x » pour le fichier ▪ Exemple : Seul, l’utilisateur « abqx » pourra exécuter le script -rwxr--r-- 1 abqx info 7406 2008-08-15 14:44 script.sh ▪ Pour autoriser les membres du groupe « info » chmod g+x script.sh 115 Linux Chapitre 6: Programmation Shell Variables de substitution ❖ Elles sont définies implicitement et peuvent être utilisées à tout moment dans le script ❖ Quelques variables utiles ▪ $0 : Nom du script (Utile lorsqu’on renomme le script) ▪ $1 à $9 : Argument 1 à 9 passés au script ▪ $# : Nombre d’arguments passés au script ▪ $? : Résultat de la commande précédente ❖ Exemple #!/bin/bash echo "La commande $0 a $# paramètre(s), que voici : $@" ❖ Exécution abqx@localhost:~ #./params bla ble bli blo blu La commande./params a 5 paramètre(s), que voici : bla ble bli blo blu 116 Linux Chapitre 6: Programmation Shell Commandes orientées Shell ❖ echo : affichage de texte sur la sortie standard ❖ expr : évaluation d'expressions numériques ❖ read : entrée standard ❖ clear : efface l'écran 117 Linux Chapitre 6: Programmation Shell echo ❖ Syntaxe : $ echo [-n] message ❖ Description : La commande echo affiche sur la sortie standard les messages passés en paramètres (après leur interprétation par le Shell). ❖ Option courante : -n n'affiche pas de saut de ligne final ❖ Exemple : $ echo ceci est un petit message ceci est un petit message $ echo $PATH /bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/home/rossignol_d/bin 118 Linux Chapitre 6: Programmation Shell expr ❖ Syntaxe : $ expr expression ❖ Description : Expression spécifie une opération arithmétique ou de traitements de chaînes de caractères ❖ Exemple : $ X=12 $ expr $X + 2 14 $ var1=10 $ var2=20 $ var3=`expr $var2 / $var1` $ echo $var3 2 page : 93 119 Linux Chapitre 6: Programmation Shell read ❖ Syntaxe : $ read variable [ variable … ] ❖ Description : lit l ’entrée standard et affecte ce qui est lu aux variables ❖ Exemple : $ read A $ echo $A $ read M1 M2 M3 $ echo $M3 $M2 $M1 $ echo -n ’Enter your name: ’; read name; echo "Hi, ${name}" Enter your name: adil Hi, adil 120 Linux Chapitre 6: Programmation Shell Exemples 🞂 $ vi test3 🞂 $ vi test5 #!/bin/bash #!/bin/bash # display user information from the system. # using the backtick character echo "User info for userid: $USER" testing=`date` echo UID: $UID echo "The date and time are: " $testing echo HOME: $HOME 🞂 $ vi test4 🞂 $ vi test6 #!/bin/bash #!/bin/bash # testing variables # An example of using the expr command days=10 var1=10 guest="Katie" var2=20 echo "$guest checked in $days days ago" var3=`expr $var2 / $var1` days=5 echo The result is $var3 guest="Jessica" echo "$guest checked in $days days ago" 121 Linux Chapitre 6: Programmation Shell Structure de contrôle « if » Le test if : Permet d’effectuer une exécution conditionnelle. Le test if peut s'écrire de deux manière: if test $Variable #condition then # alors # vos commandes ici fi # fin du bloc if (fi = if à l'envers) et if [ $Variable ] #condition then # alors # vos commandes ici fi # fin du bloc if 122 Linux Chapitre 6: Programmation Shell Structure de contrôle « if » (2) Il est également possible d'utiliser les conditions else (sinon) et elif (de else if qui signifie sinon si) dans le même bloc : if [ $Variable #condition ] then # alors # vos commandes ici elif [ $Variable #condition ] then # vos commandes ici else # vos commandes ici fi # fin du bloc if ! Attention aux espaces après le [ et avant le ]. 123 Linux Chapitre 6: Programmation Shell Liste des opérateurs ❖ Certains opérateurs sont toutefois particulier en Bash, en voici une liste : 124 Linux Chapitre 6: Programmation Shell Liste des opérateurs (2) 125 Linux Chapitre 6: Programmation Shell Exemples #!/bin/bash echo "Voulez-vous afficher la man page du man ?" read Variable # saisie de la variable if test $Variable -eq 1 # si Variable vaut 1 then # alors man man fi # fin du bloc if Voici la deuxième façon d'écrire ce script : #!/bin/bash echo "Voulez-vous afficher la man page du gcc ?" read Variable # saisie de la variable if [ $Variable -eq 0 ] # si Variable vaut 0 then # alors man gcc fi # fin du bloc if 126 Linux Chapitre 6: Programmation Shell Structure de contrôle « case » Le test case : Le test case est analogue au switch en C, il permet d'éviter une longue et fastidieuse succession de blocs if dans certains cas. Voici la syntaxe d'un test case. read Variable # saisie de la valeur de la variable case $Variable in Valeur1) Commande 1 ;; Valeur2) Commande 2 ;;... *) Commande qui s'éxécute par défaut ;; esac # fin du bloc case 127 Linux Chapitre 6: Programmation Shell Les boucles (1) La boucle while : Voilà comment se construit une boucle while : while [ #condition ] do # instructions à répéter done Et voici la deuxième syntaxe possible : while test #condition do # instructions à répéter done 128 Linux Chapitre 6: Programmation Shell Exemple On veut créer une boucle qui répète "vive le Bash !" tant que la valeur d'une variable ne vaut pas 0. #!/bin/bash quitter=1 while [$quitter -ne 0 ] do echo "Appuyez sur 0 pour quitter..." read quitter echo "vive le Bash !" done echo "bye !" 129 Linux Chapitre 6: Programmation Shell Les boucles (2) La boucle for : #!/bin/sh i=0 for i in `seq 0 10` do echo "vive Linux !" done echo "bye !“ Ceci aurait pu s'écrire de la manière classique : #!/bin/sh i=0 for (( i=0 ; i