Chapitre I- Unix
Transcription
Chapitre I- Unix
___________________________________________ Système d'exploitation et Administration système UNIX Partie 1 Version1.2 Mamadou SOW [email protected]paris13.fr IUT Villetaneuse Université Paris XIII 99 avenue Jean Baptiste Clément 93430 Villetaneuse ___________________________________________ Mamadou SOW 1 Partie 1 : Système d'exploitation et Administration système UNIX Chapitre I Unix : Historique et Généralités ................................................................................ 3 Chapitre II L 'administrateur Système ......................................................................................... 7 Chapitre III Premiers contacts avec UNIX .................................................................................. 8 Chapitre IV Sources de documentation .......................................................................................10 Chapitre V Commandes de manipulations de base de fichiers UNIX .....................................12 Chapitre VI – Les éditeurs de texte Unix ..................................................................................... 20 Chapitre VII – Attributs des fichiers ............................................................................................ 23 Chapitre VIII Expressions régulières et commandes Unix associées ....................................... 26 Chapitre IX – Commandes Unix de gestion d'espace disque ..................................................... 33 Chapitre X – Commandes Unix réseau de base ........................................................................... 36 Chapitre XI – Pratique du Bourne Shell ...................................................................................... 38 Chapitre XII Programmation en Bourne Shell ......................................................................... 46 Chapitre XIII Panorama de fichiers de configuration .............................................................. 59 Chapitre XIV Langages de programmation ............................................................................... 63 Chapitre XV Système de multi fenêtrage : X ............................................................................. 65 Mamadou SOW 2 Chapitre I Unix : Historique et Généralités Chapitre I Unix : Historique et Généralités I.1 Concepts novateurs Unix est construit autour d'une idée forte : − la puissance d'un système provient plus des relations entre les programmes que les programmes euxmêmes. − beaucoup de programmes Unix font, de façon isolé des traitements triviaux, combinés avec d'autres, ils deviennent des outils généraux et performants I.2 Les différentes familles d'Unix − − − Pour l'utilisateur, les divers UNIX se ressemblent beaucoup. Pour l'administrateur, les divers UNIX ont chacun leurs spécificités. Les commandes hardware varient, on trouve des extensions propres à chaque constructeur. Plusieurs tentatives d'unification − SystemV interface Definition de AT&T (SVID13 en 1989) − IEEE Posix (POSIX1000.1 en 1990) − X/OPEN (1984) Il reste 2 grandes familles d'UNIX − la famille System V ou système V release 4 (SVR4) AIX, HPUX, IRIX, UnixWare, XENIX, SCO la famille BSD issue de l'université de Berkeley BSD (BSD=Berkeley Software Distribution) FreeBSD, NetBSD, OpenBSD, MacOSX − Mamadou SOW 3 Chapitre I Unix : Historique et Généralités Panorama du marché UNIX Marque des Constructeurs de Hardware Version Unix APPLE Mac OX 10.x COMPAQ Tru64 Unix 5.x CRAY Unicos HP HPUX 11.x IBM Aix 5.x SGI IRIX 6.x.y SUN Solaris Marque des non Constructeurs de Hardware Linux Noyau 2.6 FreeBSD FreeBSD 5.x NetBSD NetBSD 1.x OpenBSD OpenBSD 3.x Novell Netware 6.x Santa Cruz Unixware 7.x Mamadou SOW 4 Chapitre I Unix : Historique et Généralités Panorama des distributions LINUX Linux n'est la propriété de personnes mais de toute la communauté de programmeurs. Les distributions principales sont Red hat www.redhat.com Suse www.suse.com Mandrake www.mandrake.org Debian www.debian.org knoppix www.knoppix.org Votre rôle : connaître les principes et les mécanismes d'UNIX afin de savoir s'adapter à n'importe quel UNIX I.3 Unix : un système d'exploitation Les missions d'un système sont : − mise à disposition de ressources matérielles: espace disque, temps d'exécution sur le microprocesseur central, espace mémoire, etc... − partage équitable de ces ressources entre ces utilisateurs pour atteindre le but de système multi utilisateurs. Terminologie : Mono utilisateur Une seule personne utilise l'ordinateur. Multi utilisateur Plusieurs personnes peuvent utiliser le système en même temps. Le système s'assure que qu'un utilisateur n'interfère pas sur un autre. Mono tâche Un seul processus tourne à un instant. Multi tâche Plusieurs processus donnent l'impression de tourner en même temps. Multi tâche préemptif L'OS détermine quand un processus a eu assez de temps CPU. Multi tâche non préemptif Le processus détermine lui même quand il a eu assez de temps CPU. Mamadou SOW 5 Chapitre I Unix : Historique et Généralités Exemples : Système d'exploitation MS DOS Mono utilisateur, mono tâche Windows 95/98 Mono utilisateur, multi tâche non préemptif Windows NT/2000/XP Mono utilisateur, multi tâche préemptif OS/2 Mono utilisateur, multi tâche préemptif Unix Mono utilisateur, multi tâche préemptif Mamadou SOW 6 Chapitre II L’administrateur Système Chapitre II L 'administrateur Système II.1 La mission de l'administrateur gérer les comptes utilisateurs − assister et éduquer les utilisateurs − gérer les logiciels et le matériel (installation, configuration, dépannage) − assurer la sécurité du système et du travail des utilisateurs (sauvegarde fiable et régulière, contrôle des accès, utilisation abusive des ressources) − vérification de l'adéquation du matériel avec son utilisation − Les autres facettes du métier diplomatie − aspects légaux (piratage informatique, les droits de l'administrateur et l'utilisateur, contrat, marché public, etc.) − relations humaines (SAV, services commerciales, etc.) − politique d'utilisation des machines − administrateur système = technicité + rigueur + bon sens II.2 Quelques règles de bon sens − − − − votre premier ennemi, c'est vous même si vous êtes fatigué arrêtez de travail pas de modification importante vendredi soyez sûr de pouvoir faire machine arrière mv foo foo.backup ou cp foo foo.backup − − documentez votre travail attention à l'expansion des caractères génériques II.3 Connaissance de base d'un administrateur environnement utilisateur aide en ligne système de fichiers utilisation du shell utilisation d'un éditeur de texte commande de base programmation shell Mamadou SOW 7 Chapitre III Premiers contacts avec UNIX Chapitre III Premiers contacts avec UNIX III.1 Votre compte unix : login, mot de passe login : identificateur mot de passe : confidentiel III.2 Le changement de mot de passe la commande standard sur une machine UNIX est passwd. la commande sur les systèmes Unix qui utilisent un mécanisme de centralisation de mots de passe (NIS) est yppasswd. la connexion se fait − sur terminal texte ( terminal relié à un ordinateur distant. − Les commandes sont exécutées sur l'ordinateur distant. − − sur un terminal graphique Unix (le terminal relié à un ordinateur local (LINUX, MSDOS)) Les commandes sont exécutées sur l'ordinateur local. Un terminal est un dispositif capable d'envoyer des caractères à l'ordinateur et d'afficher les résultats à l'écran. Un terminal alphanumérique est en mode texte uniquement. Il faut dissocier terminal et ordinateur. III.3 L'interface graphique Unix Unix dispose d’un grand nombre d'interfaces graphiques, comparé à des systèmes comme Windows ou Macintosh, KDE, Gnome et CDE. Une fois connecté via l'interface graphique, on utilisera principalement un programme d'émulation de terminal de type texte qui fournit dans une fenêtre une connexion comme sur un terminal texte. III.4 Les langages de commandes UNIX : les shells Le shell est un programme qui permet la saisie et l'interprétation de ce qui est tapé. Le shell est juste une interface avec le système. Le shell est un vrai langage de programmation, interprété (non compilé) offrant les structures de base de programmation de tout langage. MSDOS comporte un shell aux possibilités restreintes par rapport aux shells UNIX. Mamadou SOW 8 Chapitre III Premiers contacts avec UNIX Sous Unix, le shell est un programme au même titre qu'un autre. Le shell de travail est interchangeable par un autre shell. Les shells répandus Shell Program Description Bourne shell sh Disponible sur toute plateforme Cshell csh Shell développé pour BSD Korn shell ksh Bourne shell amélioré par AT&T Bash bash Shell distribué avec linux; version améliorée avec sh et csh Tous les shells se présentent sous la même forme à l'écran lorsqu'ils fonctionnent : une chaîne de caractères affiche que le shell attend que l'utilisateur tape quelque chose au clavier; c'est le prompt − − un curseur qui va se déplacer au fur et à mesure de la saisie. − pour terminer une session shell, on tape la commande commune à tous les shells. − exit ou le raccourci Ctrl+D. III.5 Formes générales des commandes Unix Une commande Unix = un ensemble des mots séparés par des caractères blancs (caractère espace, tabulation) commande [options] paramètres Le premier mot : le nom de la commande Le deuxième mot : les options changent le commande, les deux crochets indiquent que les options ne soient pas obligatoires. Il ne faut pas taper ces crochets sur la ligne de commande. Il reste une tendance générale : Une option est par le signe – et est souvent constituée d'une seule lettre (mais attention aux exceptions nombreuses). − Le reste des mots : les paramètres de la commande Souvent on pourra cumuler des options : ls a l == ls al == ls l a Mamadou SOW 9 Chapitre IV- Sources de documentation Chapitre IV Sources de documentation IV.1 Documentation Unix en ligne : man Il existe une documentation électronique accessible pendant le système : c'est à l'aide en ligne. Syntaxe de la commande man : man [options] commande avec la particulier comme option : man man [numéro de section] commande [s numéro de section] commande Quand on ne connaît pas le nom de la commande, on peut demander les noms des commandes dont le descriptif contient une certaine chaîne de caractères: Exemple : $ man k tune adjtimex (2) tune kernel clock bdflush (2) start, flush, or tune bufferdirtyflush daemon IV.2 RFC, internet drafts ftp://ftp.lip6.fr/pub/rfc/rfc ftp://ftp.lip6.fr/pub/rfc/internetdrafts IV.3 FAQ ftp://ftp.lip6.fr/pub/doc/faqs/ IV.4 HOWTO Linux ftp://ftp.lip6.fr/pub/linux/french/docs IV.5 Newsgroups Les newsgroups sont des forums de discussion sur internet. Sur jussieu, le serveur de news est news.jussieu.fr. Le protocole réseau des news s'appelle NNTP. Mamadou SOW 10 Chapitre IV- Sources de documentation IV.6 Moteur de recherche Google est un moteur de recherche très efficace IV.7 Documentation constructeur en ligne Certains constructeurs mettent de la documentation en ligne http://docs.sun.com IV.8 Librairies parisiennes GibertJeune Eyrolles Infothèque IV.9 Formats de la documentation − − − − − − − − − − − − − − − − format PDF à lire avec Acrobat Reader Ghostscript xpdf f ormat Postscript à lire avec Ghostscript ghostview gv format Microsoft Word à lire avec Microsoft word Microsoft word viewer Star Office Antiword openOffice format texte ; n'importe quel éditeur de texte format HTML ; n'importe quel browser web Mamadou SOW 11 Chapitre V - Commandes de manipulations de base de fichiers UNIX Chapitre V Commandes de manipulations de base de fichiers UNIX V.1 Arborescence de fichiers Les fichiers sont identifiés par leur nom de fichier, qui peuvent contenir n'importe quel caractère (sauf /) et peuvent faire jusqu'à 256 caractères de long, voire plus selon les UNIX. Un répertoire est simplement une collection de fichiers organisée de manière arborescente. Au concept de fichier est associé la notion de répertoire en anglais directory. Un fichier peut être référencé par son chemin d'accès, qui est constitué du nom de fichier, précédé par le nom de répertoire qui le contient sous la forme : chemin d'accès = répertoire / nom Arborescence Principe de l'arborescence − une racine désignée par / slash en anglais − des nœuds : répertoire − feuilles : fichiers − / bin dev usr toto tmp include sys stat.h Mamadou SOW 12 Chapitre V - Commandes de manipulations de base de fichiers UNIX Selon ce schéma, on distingue 3 possibilités pour désigner un fichier 1 chemin d'accès absolu Si le nom de répertoire commence par /, il s'agit d'une référence absolue par rapport à la racine /, constituée d'une liste des répertoires à parcourir depuis la racine pour accéder au fichier par exemple : /usr/include/sys/stat.h 2 chemin d'accès relatif Si le nom de répertoire ne commence pas par /, il s'agit d'une référence relative par rapport au répertoire courant. Le répertoire courant est désigné par un point . .. Le répertoire parent du répertoire courant est noté directory .. directory . Exemple : Depuis la référence /usr/include on a sys/stat.h Depuis la référence /usr/include on a ../../bin/toto Mamadou SOW 13 Chapitre V - Commandes de manipulations de base de fichiers UNIX 3 chemin d'accès relatif par rapport à un utilisateur / bin dev toto ... tmp mamadou fichier1 fichier2 rep1 Sur le principe identique à un chemin relatif sauf que le point de départ est le répertoire d'un utilisateur que l'on désigne par le ~ suivi du nom de l'utilisateur. $ ls ~mamadou 4 Liste des fichiers : ls Syntaxe : ls [options] fichiers Principales options (cumulables): Options Commentaires l Affichage au format long des informations relatives aux fichiers g Affichage des groupes propriétaires des fichiers R Liste récursive d Affichage des noms des répertoires et non de leur contenu F Affichage des fichiers avec un suffixe désignant le type de fichier a Affichage des fichiers dont les noms commencent par un point . Mamadou SOW 14 Chapitre V - Commandes de manipulations de base de fichiers UNIX 5 Quelques commandes utiles Commandes Utilisation cat Affichage du contenu d'un texte more Affichage du contenu d'un texte. Dans le cas où le texte est très long cat n'est pas pratique. La commande more permet d'effectuer des affichages page par page Caractère q pour quitter Caractère espace pour avancer d'une page d'écran Caractère b pour revenir en arrière d'une page (backward) Caractère f pour avancer d'une page d'écran (forward) rm Destruction d'un fichier option "i" : confirmation à chaque supression (garde fou) option "r" : suppression récursive option "f" : suppression en force d'un fichier même si ses droits ne s'y prêtent pas cp Duplication d'un fichier : cp cp [options] fichierdépart fichierdestination cp [options] fichierdépart répertoiredestination "i" : confirmation à chaque écrasement de fichier "r" : copie récursive mv Déplacement et renommage d'un fichier : mv mv [options] fichierdépart fichierdestination mv [options] fichierdépart répertoiredestination mv [options] répertoiredépart répertoiredestination "i" : confirmation à chaque écrasement de fichier mkdir Création de répertoire "'p" : création de sous répertoire rmdir Suppression de répertoire cd, pwd Positionnement et position dans les répertoires Mamadou SOW 15 Chapitre V - Commandes de manipulations de base de fichiers UNIX Commandes wc Utilisation Comptage de lignes dans un fichier "c" : nombre de caractères "w" : nombre de mots "l" : nombre de lignes diff Comparaison de 2 fichiers diff [c] fichier1 fichier2 head Extraction des premières lignes de fichiers head [N] fichier N : nombre de lignes tail Extraction des dernières lignes de fichiers tail [N] fichier "+N" : affichage à partir de la N ième du texte "f" : affichage des dernières lignes en temps réel cut Extraction de colonne extraction sur chaque ligne de caractères pris isolément : cut c 1, 8, 27 fichier extraction sur chaque ligne de caractères d'une position 1 à une position 2: cut c 2542 fichier extraction sur chaque ligne (constituée de mots séparés par un certain délimiteur ) de mots pris isolément : cut d: f 1,5 fichier extraction sur chaque ligne (constituée de mots séparés par un certain délimiteur ) du mot i au mot j : cut d: f 47 fichier Mamadou SOW 16 Chapitre V - Commandes de manipulations de base de fichiers UNIX Commandes paste Utilisation Collage de colonnes % cat fichier1 aaa bbb %cat fichier2 AAA BBB CCC %cat fichier3 ligne 1 ligne 2 ligne 3 ligne 4 %paste fichier1 fichier2 , Collage simple des colonnes aaa AAA bbb BBB CCC %paste s fichier1 fichier2 , Collage complexe des colonnes aaa bbb AAA BBB CCC %paste s d"\t\n"fichier3 , Collage complexe des colonnes ligne 1 ligne 2 ligne 3 ligne 4 Mamadou SOW 17 Chapitre V - Commandes de manipulations de base de fichiers UNIX Commandes sort Utilisation Tri d'un fichier "n" : tri numérique "r" : tri par ordre décroissant "t" : permet de spécifier le séparateur de mots "k" : spécifie la colonne sur laquelle trier uniq Elimination des lignes redondance d'un fichier "c" : précéde chaque ligne du résultat du nombre d'occurences de cette ligne dans le fichier original "d" : suppression des lignes qui ne sont pas en plusieurs exemplaires touch − Création d'un fichier vide − Modification des dates d'un fichier touch [options] [t time] fichier "a" : modification de la date d'accès du fichier (a=accesstime) "m" : modification de la date de modification du fichier (m=mtime) "t time" : indique une date autre que la date du moment à mettre; au format : AAAAMMJJhhmm.ss /tmp Création de fichiers temporaires Le répertoire /tmp sert à stocker des fichiers temporaires Les droits d'accès sont 1777 en octal Signification de 777 : tout le monde sur la machine peut créer, modifier et effacer des fichiers Signification de 1000 : vous ne pouvez effacer que les fichiers qui vous appartiennent basename Manipulations des noms de fichiers synthaxe : basename fichier [suffixe] 1 Suppression des composantes du path jusqu'au dernier caractère /: %basename /users/mamadou/cours/cours.tex cours.tex 2 La précision d'un suffixe amène la suppression de ce suffixe également : %basename /users/mamadou/cours/cours.tex .tex cours Mamadou SOW 18 Chapitre V - Commandes de manipulations de base de fichiers UNIX Commandes ln, ln s Utilisation A chaque fichier peut être associé plusieurs noms. Chaque nom est un lien. Il y a un compteur de liens pour chaque fichier − incrémenté lors de la création d'un lien − décrémenté lors de la suppression d'un lien − le contenu d'un fichier est détruit lorsque le dernier lien est suppimé Il existe deux types de liens: hard et symbolique lien hard : limité au sein d'un même disque dur, où garantie l'unicité d'un inode (matricule de fichier) − la commande à utiliser est : ln original synonyme Suppression par rm lien symbolique : non limité à un disque parce qu'utilisant le nom d'un fichier et non pas son "matricule". En fait, c'est un fichier contenant le nom du fichier source. la commande à utiliser est : ln s original synonyme Suppression par rm file Syntaxe: file fichier Cette commande permet d'intuiter à quelle application est lié le fichier. 6 Utilitaires pour disquettes PC : mtools, mcopy Sur des machines équipées de lecteur de disquettes, on peut transférer des fichiers depuis et vers leur lecteur de disquette. Un logiciel appelé mtools permet d'utiliser les disquettes en offrant des commandes Unix avec la logique des commandes connues du DOS. La commande de base à utiliser est mcopy Transfert d'Unix vers la disquette mcopy fichier a: Transfert de la disquette vers Unix mcopy a:fichier . Affichage du contenu de la disquette mdir a: Mamadou SOW 19 Chapitre VI – Les éditeurs de texte Unix Chapitre VI – Les éditeurs de texte Unix VI.1 Panorama d'éditeurs de fichiers texte Il existe beaucoup d'éditeurs de texte sous Unix mais seuls quelques uns sont suffisamment robustes pour être utilisés efficacement et avec confiance : vi : le seul éditeur de texte standard sous Unix emacs et xemacs : puissant, complexe à maîtriser, simple une fois qu'on sait s'en servir. Xemacs est une variante plus graphique − nedit : Simple et intuitif grâce à ses menus − − VI.2 Editeur de fichier texte : vi Il fonctionne sur tout type de terminal texte, sur tout Unix − Commande passant en mode édition Séquence Action i Insérer à la position courante a Insérer à la position suivante du curseur I Insérer en début de ligne A Insérer en fin de ligne o Ouvrir une nouvelle ligne en dessous du curseur O Ouvrir une nouvelle ligne en dessus du curseur cw Changer un mot c$ Changer jusqu'à la fin de ligne − Sortie du mode On passe du mode saisie de texte au mode commande par la touche ESC. Mamadou SOW 20 Chapitre VI – Les éditeurs de texte Unix Commandes principales Séquence Action x Détruire le caractère sous le curseur r Remplacer le caractère sous le curseur dd Effacer la ligne courante dw Effacer le mot sous le curseur . Répéter la dernière commande J Joindre la ligne suivante avec la ligne courante /toto Rechercher toto dans la texte n Répéter la dernière recherche u Annulation de la dernière commande (undo) Nombre G Aller à la ligne "nombre" CTRL+L Rafraîchir l'écran Sauvegarde / Sortie de vi − Séquence Action :w Sauver le fichier édié :w toto Sauver dans le fichier toto :q Quitter vi :q! Quitter vi sans sauvegarder la moindre chose :wq Sauver puis quitter vi :r toto Insérer le contenu du fichier Mamadou SOW 21 Chapitre VI – Les éditeurs de texte Unix Commandes de copier/coller Séquence Action yy Copier la ligne courante dans la mémoire copier/coller p Coller dans le texte le contenu de la mémoire précédente Nombre yy Copier "nombre" lignes dans la mémoire copier/coller Commandes de substitution Séquence Action :s/toto/titi Sur la ligne du curseur, remplacer le premier mot toto par titi :s/toto/titi/g Sur la ligne du curseur, remplacer tous les mots toto par titi :1,$s/toto:titi/ De la ligne 1 à la dernière ligne $, remplacer le premier mot toto par titi :1,$s/toto/titi/g De la ligne 1 à la dernière ligne $, remplacer tous les mots toto par titi − Principales options Séquence Action :set all Afficher toutes les options positions :set nu Afficher les numéros de ligne :set toto Positionner l'option toto à vrai :set no toto Positionner l'option toto à faux Mamadou SOW 22 Chapitre VII – Attributs des fichiers Chapitre VII – Attributs des fichiers VII.1 Définition des droits d'accès d'un fichier Les droits d'accès à un fichier sont stockés dans une structure dite inode. Cette structure n'est pas manipulable directement. Les droits d'accès se voient grâce à la commande ls l [sow@toutankamon COURS]$ ls l total 556 drwxrxrx 30 sow admin 4096 déc 23 06:29 ARS/ rwxrxrx 1 sow admin 265807 déc 22 23:48 cours_tar.gz rwxrxrx 1 sow admin 34304 déc 22 23:57 mail.doc Les droits sont indiqués par les 10 premiers caractères de chaque ligne affichée: Type de fichier r w x r w x r w x user group others Il existe 3 droits u Droits du propriétaire = user associés g Droits des membres du groupe = group à chaque fichier o Droits des autres utilisateurs = others Il est 3 types r Droit en lecture = read de w Droit en écriture = write permissions x Droit en exécution = execute access Mamadou SOW 23 Chapitre VII – Attributs des fichiers VII.2 Changements des droits d'accès d'un fichier : chmod Synthaxe : chmod [options] modes fichier L a précision des modes dans la commande peut être prendre deux formes : Forme symbolique u, g , o, a r,w,x Forme numérique: les permissions sont exprimées en base huit en octale Droits Valeur base 2 0 0 0 Valeur base 8 0 x 0 0 1 1 w 0 1 0 2 w x 0 1 1 3 r 1 0 0 4 r – x 1 0 1 5 r w 1 1 0 6 r w x 1 1 1 7 VII.3 Les attributs spéciaux de fichier Il existe des attributs spéciaux de fichier réservé à la gestion du système. Le bit setuid 4000 ou "u+s" Le bit setgid 2000 ou "g+s" Avec ce bit positionné, le programme est exécuté avec les droits de l'utilisateur propriétaire Avec ce bit positionné, le programme est exécuté avec les droits du groupe propriétaire VII.4 Attribut spécial de répertoire : sticky bit Il existe un attribut spécial de répertoire réservé à la gestion du système : le sticky bit 1000 Avec ce bit positionné, on ne peut effacer d'un répertoire que ses propres fichiers et pas ceux des autres. Exemple : L'utilisation sur le répertoire système de stockage des fichiers temporaires Mamadou SOW 24 Chapitre VII – Attributs des fichiers VII.5 Attribut de date d'un fichier : mtime, atime, ctime Sur unix, à chaque fichier/répertoire sont associées 3 dates stockées dans une structure dite inode. Cette structure n'est pas manipulable directement. Ces 3 dates sont : − date de dernière modification dite mtime (modification time) − date de dernier accès dite atime (access time) − date de dernière modification des attributs dite ctime (change time) La commande ls : − option "l" : format long (affichage du mtime par défaut) − option "t" : tri décroissant par date (mtime par défaut) − option "r" : tri par ordre inverse ls lt : classement par ordre chronologique décroissant des mdates ls ltu : classement par ordre chronologique décroissant des atimes ls ltc : classement par ordre chronologique décroissant des ctimes VII.6 Consultation de l'horloge : date Synthaxe : date [options] [+format] Quelques cas utiles: date : la date de l'instant courant date u : la date GMT de l'instant courant date '+%YYYY%mm%dd' : date du jour sous la forme AAAAmmjj − − − VII.7 Modification des dates d'un fichier : touch touch [options] [t time] fichier Options: "a" : modification de la date d'accès du fichier "m" : modification de la date de modification "t" time : indique une date autre que la date du moment à mettre; format : AAAAmmjj.ss Mamadou SOW 25 Chapitre VIII- Expressions régulières et commandes Unix associées Chapitre VIII Expressions régulières et commandes Unix associées Les programmes Unix utilisent des critères de reconnaissance de motifs de chaînes de caractères. La "regexp" est la traduction en langage Unix du motif, ce qui permettra de le reconnaître au sein d'un texte dans un fichier. Un exemple de motif : Les lignes commençant par la lettre a. Ainsi le motif précédent donne la regexp : ^a La regexp traduit le motif à rechercher sous la forme d'une suite de contraintes à satisfaire toutes. Pour construire les contraintes, on dispose des écritures : caractère Désigne la contrainte pour un caractère d'être ce caractère [caractères] Désigne la contrainte pour un caractère d'être parmi la liste indiquée [^caractères] Désigne la contrainte pour un caractère de ne pas figurer dans la liste . Désigne la contrainte pour un caractère d'être quelconque ^ Désigne la contrainte d'être en début de ligne $ Désigne la contrainte d'être en fin de ligne {m,n} Indique que la contrainte mentionnée juste avant doit être satisfaite entre m et n fois * Indique que la contrainte mentionnée juste avant doit être satisfaite autant de fois que possible en pratique (de 0 à autant que l'on veut) Application des regexps : sélectionner des lignes de fichiers texte qui satisfont la regexp >> c'est l'objet de la commande Unix grep faire des remplacements du texte satisfaisant la regexp par un autre texte qui peutêtre déduit du texte initial >> c'est l'objet de la commande Unix sed − Mamadou SOW 26 Chapitre VIII- Expressions régulières et commandes Unix associées Exemple Le motif à satisfaire 1 La ligne contient le mot elephant Traduction en regexp elephant La ligne se termine par 2 caractères [az][az][09]$ ou [az](2)[09]$ 2 en miniscule suivis d'un chiffre mot1:mot2:mot3: mot1 commence par une lettre majuscule − chiffre 3 − ^[AZ][^:]* :[^:]*[09]:[^:]*: mot2 se termine par un mot3 est quelconque ascenceur berceau chameau ^[^abc]* fichier ^[^abc] fichier résultat : elephant résultat : ascenceur elephant berceau chameau elephant 4 VIII.1 Recherche de regexp dans un fichier : grep Synthaxe : grep [options] regexp fichier Options i Pas de différenciation entre lettres miniscules et majuscules n Affichage des numéros l n'affiche que les noms de fichiers v Affichage des lignes ne contenant pas la chaîne précisée Mamadou SOW 27 Chapitre VIII- Expressions régulières et commandes Unix associées Exemple : fichier Ecrivons toto en minuscules ici. % grep toto fichier Et ici ToTo en minuscules et majuscules. Ecrivons toto en minuscules ici. Mais là on ne met pas la regexp de l'exemple. Ecrivons toto en minuscules ici. % grep in toto fichier Et ici ToTo en minuscules et majuscules. Ecrivons toto en minuscules ici. Mais là on ne met pas la regexp de l'exemple. Et ici ToTo en minuscules et majuscules. Ecrivons toto en minuscules ici. % grep inv toto fichier Et ici ToTo en minuscules et majuscules. Mais là on ne met pas la regexp de l'exemple. Mais là on ne met pas la regexp de l'exemple. 185444689;LUKOVIC ;DRAGICA 100059078;LUMINET ;AMANDE On cherche les prénoms qui commencent par DR: 557080069;LUND ;BRIANA NICOLE 882345678;MEKOUAR;DRISS % grep ';DR[^;]*$' fichier 890765443;MILON ;NICOLAS 185444689;LUKOVIC ;DRAGICA 122222789;MILOSAL ;DRAGANA 882345678;MEKOUAR;DRISS 122222789;MILOSAL ;DRAGANA En pratique: la regexp comprise entre deux apostrophes (l'explication des apostrophes sera vue au niveau du cours sur la pratique du shell) − grep E − egrep sur linux : [options] 'regexp' fichiers sur l'Unix de SUN, solaris : [options] 'regexp' fichiers Modification à la volée de contenu de fichiers: sed Synthaxe : sed options fichiers La commande sed agit sur un flux. Un flux est une quantité de texte envoyé à l'affichage par une commande Mamadou SOW 28 Chapitre VIII- Expressions régulières et commandes Unix associées Exemple de flux: le résultat d'une commande ls le résultat d'un cat fichier Options e commande Commande à exécuter sur chaque ligne du flux Commande prend la forme : [adresse1[,adresse2]]fonction[argument] On construit une adresse de ligne grâce à: son numéro de ligne le caractère $ pour désigner la dernière ligne les fonctions proposées dans sed: suppression de ligne : d affichage de ligne : p substitution au sein des lignes : s/regexp/remplacement/modifiers f script Précision d'un fichier dans lequel prendre les commandes à appliquer sur chaque ligne de texte Mamadou SOW 29 Chapitre VIII- Expressions régulières et commandes Unix associées % cat fichier Ceci est la 1ière ligne On veut supprimer la première ligne lors de l'affichage Ceci est la 2ième ligne % sed e '1d' fichier Ceci est la 3ième ligne Ceci est la 2ième ligne Ceci est la 4ième ligne Ceci est la 3ième ligne Ceci est la 5ième ligne Ceci est la 4ième ligne Ceci est la 5ième ligne On veut garder que les 4 premières lignes du fichier lors de son affichage % sed e '$d' fichier Ceci est la 1ière ligne Ceci est la 2ième ligne Ceci est la 3ième ligne Ceci est la 4ième ligne moteur;ferrari;30 On veut remplacer le moteur 'epuise' du fichier par 0 lors de son affichage moteur;porsche;epuise % sed e 's/epuise/0/' fichier carrosserie;porsche;epuise moteur;ferrari;30 moteur;ford;40 moteur;porsche;0 poteur;skoda;epuise carrosserie;porsche;0 % cat fichier moteur;ford;40 moteur;skoda;0 On veut remplacer le moteur 'epuise' du fichier par 0 pour les lignes partant de moteur lors de son affichage % sed e '/moteur/s/epuise/0/' fichier moteur;ferrari;30 moteur;porsche;0 carrosserie;porsche;epuise moteur;ford;40 moteur;skoda;0 Mamadou SOW 30 Chapitre VIII- Expressions régulières et commandes Unix associées % cat fichier On veut remplacer le mot chevals du fichier par Les courses de chevals se font a des chevaux lors de l'affichage Vincennes. % sed e 's/cheval/chevaux/' fichier Les chevals ont 4 jambes. Les chevals Les courses de chevaux se font a sont des equides. Vincennes Les chevaux ont 4 jambes. Les chevals sont des equides. > le remplacement n'a pas lieu sur tous les chevals au sein d'une ligne On veut remplacer le mot chevals du fichier par des chevaux lors de l'affichage % sed e 's/cheval/chevaux/g' fichier Les courses de chevaux se font a Vincennes Les chevaux ont 4 jambes. Les chevaux sont des equides. > le remplacement a lieu sur tous les chevals au sein d'une ligne. Mamadou SOW 31 Chapitre VIII- Expressions régulières et commandes Unix associées VIII.3 Commande de recherche de fichiers : find On recherche à partir des répertoires indiqués les fichiers répondant aux critères exprimés par des expressions. Syntaxe : find répertoires expressions Expressions Les expressions indiquant des actions à effectuer Critère de nom : name nom Critère de droits d'accès : perm permissions Critère de type (fichier, répertoire): type type (d pour directory, f pour file, etc) Critère de taille : size N Critère de date récente : newer fichier Critère de date : atime N, mtime N, ctime N Affichage du nom du fichier trouvé : print Exécution d'une commande: exec commande {} \; Les expressions indiquant des conditions Ou logique entre conditions : condition1 o condition2 Et logique entre conditions : condition1 a condition2 (en fait a est facultatif) Des exemples : − Recherche des fichiers d'extension '.c': % find . name \*.c print % find . name '*.c' print − Recherche des répertoires : % find . type d print Recherche des fichiers de plus 10000000 caractères : % find ~ size +10000000c print Mamadou SOW 32 Chapitre VIII- Expressions régulières et commandes Unix associées Recherche de tous les fichiers s'appelant a.out ou s'appelant avec une extension '.o', non utilisés depuis plus de 7 jours et on appliquera la commande d'effacement aux fichiers trouvés % find . \(name a.out o name '*.o'\) atime +7 exec rm {} \; La commande find est une commande récursive et dépassant le niveau du répertoire courant en descendant plus bas. !!!! : Ne pas confondre la commande find et la commande ls Mamadou SOW 33 Chapitre IX – Commandes Unix de gestion d’espace disque Chapitre IX – Commandes Unix de gestion d'espace disque commandes df utilités exemples Sert à indiquer le taux de [sow@toutankamon ~]$ df remplissage des disques durs locaux Sys. de fich. Tail. Occ. Disp. %Occ. de l'ordinateur ainsi que des réseau Monté sur /dev/sda6 5,0G 1,4G 3,4G qui stockent vos fichiers 29% / /dev/sda8 6,7G 6,4G 288M 96% /home /dev/sda2 28G 18G 11G 64% /mnt/windows /dev/sda7 8,0G 5,5G 2,2G 72% /usr du Calcul la place disque occupée : du [sow@toutankamon ~]$ du sh * 368K amsn_received 4,0K autosave 0 BARA [sow@toutankamon ~]$ du sk * 368 amsn_received 4 autosave 0 BARA Compress Compression de fichiers uncompre ss zcat Gzip gunzip gzcat Compress [options] fichier (après la compression le nom du fichier est fichier.Z) uncompress [options] fichier.Z zcat fichier.Z pour lire le fichier.Z Cette série compressent mieux que gzip [options] fichier gunzip [options] fichier.gz la précédente famille gzcat fichier.gz pour lire le fichier.gz après la compression le fichier portera le nom fichier.gz Mamadou SOW 34 Chapitre IX – Commandes Unix de gestion d’espace disque commandes Bzip2 bunzip2 utilités exemples Cette série compressent mieux que bzip2 [options] fichier bunzip2 [options] fichier.bz2 la famille de compress bzcat fichier.bz2 pour lire le fichier.bz2 bzcat2 après la compression le fichier portera le nom fichier.bz2 tar Archivage de fichiers/répertoires Création d'une archive : La commande tar permet d'archiver tar cvf archive.tar fichiers dans un seul fichier une Affichage du contenu d'une archive : arborescence. Conjuguée à une commande de compression, cela tar tvf archive.tar permet de mettre de côté une Extraction de l'archivage complète : arborescence dont on n'a plus tar xvf archive.tar besoin. Au passage on gagne de la Extraction d'un fichier précis de l'archive : place. tar xvf archive.tar fichier tar + compress Création d'une archive : tar cvZf archive.tar.Z fichiers Affichage du contenu d'une archive : tar tvZf archive.tar.Z Extraction de l'archivage complète : tar xvZf archive.tar.Z Extraction d'un fichier précis de l'archive : tar xvZf archive.tar fichier tar + gzip Création d'une archive : tar cvzf archive.tar fichiers Affichage du contenu d'une archive : tar tvzf archive.tar Extraction de l'archivage complète : tar xvzf archive.tar Extraction d'un fichier précis de l'archive : tar xvzf archive.tar fichier Mamadou SOW 35 Chapitre X – Commandes Unix réseau de base Chapitre X – Commandes Unix réseau de base Commandes Définitions Synthaxe lpr Une impression nécessite de Pour imprimer, utiliser connaître le nom de l'imprmante lpr P imprimante fichier et d'avoir un fichier au bon Pour consulter la queue d'impression, utiliser la format commande lpq P imprimante Pour retirer un fichier de la queue d'impression, utiliser la commande lprm P imprimante numerodans la queue renvoyé par lpq hostname Pour connaître le nom de la [sow@toutankamon ~]$ hostname machine toutankamon uname Pour connaître la version du [sow@toutankamon ~]$ uname a noyau unix Linux toutankamon 2.6.1225mdk #1 Fri Aug 18 15:09:47 MDT 2006 i686 Intel(R) Pentium(R) M processor 1.60GHz unknown GNU/Linux Pour connaître le nom de la [sow@toutankamon ~]$ uname n machine toutankamon [sow@toutankamon ~]$ uname r 2.6.1225mdk ping Test de connectivité ping machine traceroute La commande traceroute permet traceroute machine de tester si une machine est joignable. Elle renvoit les intermédiaires réseau qui route notre acheminement vers la machine distante ftp Transfert de fichiers entre ftp machine machines la commande ftp vous place dans une espèce de shell. ssh,telnet Commandespermettant d'ouvrir ssh machine une session shell sur une Mamadou SOW 36 Chapitre X – Commandes Unix réseau de base Commandes Définitions Synthaxe distante users who w Commandes permettant d'avoir la liste des personnes connectées sur un système Unix mutt (mode Courrier électronique texte) Web url Thunderbird (mode graphique) Consultation de documentation On utilise un brower web pour consulter un en ligne URL lynx firefox Mamadou SOW 37 Chapitre XI – Pratique du Bourne Shell Chapitre XI – Pratique du Bourne Shell XI.1 Principe d'exécution d'une commande attente d'une entrée des caractères spéciaux de la commande traitement des caractères spéciaux de la commande − recherche de l'exécutable : s'il n'est pas trouvé, on affiche un message d'erreur et le shell reprend à l'étape 1 − fork() et exec() de la commande à lancer − le shell fait un wait() de la commande − une fois la commande terminée, le shell reprend à l'étape 1 − − XI.1 Caractères spéciaux du shell : métacaractères Caractères Signification Tabulation, espace Appelés white caracters délimiteurs des mots; un tel caractère au minimum Retour chariot Fin de la commande d'exécution & Lance la commande en tâche de fond ' " \ Appelés quote caracters; changent la façon dont le shell interprété les caractères spéciaux < > >> << ` Caractères de redirection d'entrée/sortie | * ? [ ] Caractères de substitution de noms de fichiers [^ ] $ Valeur d'une variable ; Séparateur de commandes sur une ligne XI.2 Contrôle des commandes lancées : &, fg, bg, kill, ^C, ^Z Avant plan Lorsqu'une commande est en train de s'exécuter, le shell ne rend pas la main et attend que la commande se termine (correctement ou incorrectement). Pour interrompre prématurément une commande : taper sur la touche "CTRL" et aussi sur la touche "C" du clavier. Cela tue la commande qui tournait. On notera l'appui sur ces 2 touches par CTRL+C ou par ^C. Il faudrait éviter d'utiliser la Mamadou SOW 38 Chapitre XI – Pratique du Bourne Shell commande CTRL+Z en tant que débutant pour ne pas saturer la machine de commandes suspendues. Pour passer en background une commande lancée en foreground : 1 Figer la commande en cours Taper ^Z: % commande .... ^Z 2 Indiquer de lexécuter dorénavant en background %bg [1] + commande & Arrière plan Si l'on veut lancer une commande et récupérer la main tout de suite avant même que la commande ait fini de s'exécuter, il faut lancer la commande par : % commande & Le signe & signifie de lancer en tâche de fond, en background la commande. Sans ce signe, la commande est lancée en premier plan, en foreground. Pour indiquer de l'exécuter dorénavant en foreground taper la commande fg : % fg Liste des processus en arrière plan Pour connaître la liste des commandes en background : %jobs [1] + Running commande On peut avoir plusieurs commandes en background. D'où une numérotation des commandes qui sont affichées. Ces numéros peuvent être repris dans les commandes fg et bg ainsi que dans la commande suivante kill. %jobs [1] + Running commande %kill %1 Les commandes fg, bg, jobs ne fonctionnent que sur les processus de shell courant. Mamadou SOW 39 Chapitre XI – Pratique du Bourne Shell XI.3 Contrôle de processus ps, kill, top Syntaxe de la famille BSD Les processus associés à son terminal ps Tous ses processus ps x Tous les processus de la machine ps ax Tous les processus de la machine avec les noms de login associés ps aux Système V ps ps edf La commande kill existe sur tous les Unix. Elle sert à communiquer avec les processus : − arrêt de processus − demande au processus de se reconfigurer − passage en mode verbeux du processus − etc ... La commande top affiche une liste des processus toutes les n secondes. Une pression sur la touche h permet de lister les options Tasks: 83 total, 2 running, 81 sleeping, 0 stopped, 0 zombie Cpu(s): 0.7% us, 0.0% sy, 0.0% ni, 99.0% id, 0.0% wa, 0.3% hi, 0.0% si Mem: 1034184k total, 381396k used, 652788k free, 44576k buffers Swap: 1204832k total, 0k used, 1204832k free, 217912k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4132 sow 16 0 28976 15m 12m R 0.0 1.5 0:01.28 konsole 4222 sow 16 0 2016 1048 816 R 0.0 0.1 0:00.00 top XI.4 Quote characters: ', ", \ Caractère Nom Description ' Single Le shell n'interprète aucun caractère spécial entre deux ' " Double quote Le shell n'interprète aucun caractère spécial à l'exception de $ ' et \ \ Backslash Le shell n'interprète pas le caractère spécial suivant le backslash Exemple [sow@toutankamon ~]$ echo "$HOME" /home/sow [sow@toutankamon ~]$ echo '$HOME' $HOME Mamadou SOW 40 Chapitre XI – Pratique du Bourne Shell [sow@toutankamon ~]$ echo "\$HOME" $HOME [sow@toutankamon ~]$ echo '\$HOME' \$HOME XI.5 Caractères de redirection : <, >, >>, <<, ', |, 2>, >& Toutes les entrées/sorties d'unix sont réalisées au moyen de fichiers. Chaque processus ouvre donc un certain nombre de fichiers. Ces fichiers sont référencés en interne par une table d'entiers dits file descriptors. Nom File descriptor Description par défaut Standart input (stdin ) 0 Standart output (stdout) 1 Standart error (stderr) Clavier Écran 2 Écran Les file descriptors existent en langage C et sont profondément ancrés dans le fonctionnement même d'Unix. Format Description Command < fichier Stdin de command provient de fichier Command > fichier Stdout de command placé dans le fichier dont le contenu précédent est écrasé Command >> fichier Stdout de command placé en fin de fichier Command << label Stdin de command provient des lignes de commande suivantes jusqu'à la ligne ne contenant que label `command` Remplace 'command' par le résultat de l'exécution de command Command1 | command2 Passe le stdout de command1 comme stdin de command2 Command 2> fichier Redirige stderr de command dans le fichier Command >& filedescriptor Redirige la sortie de command vers un certain fichier descriptor Mamadou SOW 41 Chapitre XI – Pratique du Bourne Shell XI.6 Trou noir pour redirection : /dev/null On peut vouloir se débarasser d'une partie de l'affichage . La solution est de rediriger vers /dev/null % application > /dev/null XI.7 Désignation des fichiers par leurs noms : *, ? , [ ], [ ^] Caractère Description * 0 ou plus caractères ? 1 caractère exactement [ ] 1 caractère dans l'ensemble entre crochets [^ ] 1 caractère non énuméré dans l'ensemble entre crochets 1 [sow@toutankamon exos]$ ls * ftpserver.png mpd.doc mrtg1.png mrtg2dns.png mrtg3apach.png page_acc.png pageweb.png proxy6.png sambaserver.png 2 [sow@toutankamon exos]$ ls *.? ls: *.??: Aucun fichier ou répertoire de ce type 3 [sow@toutankamon exos]$ ls *.?? ls: *.??: Aucun fichier ou répertoire de ce type 4 [sow@toutankamon exos]$ ls *.??? ftpserver.png mpd.doc mrtg1.png mrtg2dns.png mrtg3apach.png page_acc.png pageweb.png proxy6.png sambaserver.png 5 [sow@toutankamon exos]$ ls mrtg* mrtg1.png mrtg2dns.png mrtg3apach.png 6 [sow@toutankamon exos]$ ls [^mf]* page_acc.png pageweb.png proxy6.png sambaserver.png Mamadou SOW 42 Chapitre XI – Pratique du Bourne Shell XI.8 Variables A un shell est associé un environnement dans le sont affectées des variables − Assignation de variable variable = valeur Rappel : L'espace est un caractère spécial donc pas d'espaces de part et d'autre du signe Consultation de variable $variable ou ${variable} − Suppression de variable unset variable − Liste des variables définies dans l'environnement set Protection en écrire readonly variable readonly Variables de type numérique Cela n'existe pas en Bourne shell. Les variables sont de type alphanumériques − >> Il est donc impossible de faire : count = 1 count = $count + 1 >> La bonne façon de faire est d'utiliser la commande Unix expr : count = 1 count = `expr $count + 1` Mamadou SOW 43 Chapitre XI – Pratique du Bourne Shell XI.9 Variables d'environnement % foo=3 % sh La solution consiste à utiliser export (son contraire est unset) % echo $foo % exit % FOO=3 % echo $foo % export FOO 3 % sh % echo $FOO 3 % exit % echo $FOO Les variables ne sont pas héritées par défaut par 3 les commades lancées par le shell NB: Traditionnellement les variables d'environnement sont écrites en lettres majuscules Attention !!! % FOO=3 % export FOO % sh % echo $FOO 3 % FOO=2 % echo $FOO 2 % exit % echo $FOO 3 L'environnement est hérité en accès en lecture uniquement. Mamadou SOW 44 Chapitre XI – Pratique du Bourne Shell Variable d'environnement standard Description HOME homedirectory USER username SHELL Path du shell utilisé PATH Liste des directories dans lesquels chercher des commandes TERM Type du terminal XI.10 Variable d'environnement PATH En bourne Shell, la variable PATH stocke le chemin de commandes Chemin de commandes == liste de répertoires séparés par des " : " [sow@toutankamon ~]$ echo $PATH /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin En fait il faudrait parcourir tous ces répertoires jusqu'à trouver la commande en question En mode interactif, pour ajouter un répertoire " /chemin/vers/toto" à son PATH : en début de PATH, faire : % PATH= /chemin/vers/toto: $PATH % export PATH − en fin de PATH, faire : % PATH=$PATH: /chemin/vers/toto % export PATH Pour retirer un répertoire de son PATH % PATH=/repertoire1 :/repertoire2:/repertoire3:..:/repertoireN % export PATH !!! On ne met jamais "." dans son PATH XI.11 Variable d'environnement TERM !!! On ne change jamais la valeur mise automatiquement par le système sinon risque un problème avec les éditeurs tel que vi XI.12 Quitter un shell : exit ou CtrlD Mamadou SOW 45 Chapitre XII- Programmation en Bourne Shell Chapitre XII Programmation en Bourne Shell XII.1 Caractéristiques d'un shell Caractéristiques : − programme écrit en langage shell − exécutable : [sow@toutankamon ~]$ file /usr/bin/mozilla /usr/bin/mozilla: Bourne shell script text executable [sow@toutankamon ~]$ ls lF /usr/bin/mozilla rwxrxrx 1 root root 5850 sep 15 2005 /usr/bin/mozilla* XII.2 Structure d'un shell 1 Désignation du shell La première ligne du shell script commence par " #! " suivi du path du shell utilisé et de ses arguments. 2 Commentaires Un commentaire est introduit par le caractères # et se poursuit jusqu'à la fin de la ligne. Un commentaire peut être placé n'importe où. La première ligne du script est un commentaire très particulier. 3 Code Traditionnellement les lignes de code respectant la syntaxe du shell utilisé Exemple : #! /bin/sh # @ (#) true.sh 1.5 for i in * do echo $i done !!! La première ligne du script doit être celle en #!/bin/sh Mamadou SOW 46 Chapitre XII- Programmation en Bourne Shell XII.3 Passage de paramètre à un shell script : $1 à $9 Variable Description $0 Nom du shell $1 à $9 Les 9 premiers paramètres $# Le nombre de paramètres $* Tous les paramètres passés du shell script sous la forme de mots individuels séparés $@ Tous les paramètres passés au shell script Exemples Résultats #!/bin/sh %./foo 12 3 8 VAL=`expr ${1} \+ ${2} \+ ${3}` 23 echo $VAL %./foo 5 7 12 %./foo 12 12 L'utilisation de la commande shift #!/bin/sh %./wrong a b c d echo $1 $2 $3 ./wrong a b c #!/bin/sh %./good a b c d echo $1 $2 $3 a b c shift d c d echo $1 $2 $3 !!!: A chaque emploi de shift, le paramètre $1 précédent est perdu. Du même coup ce paramètre est supprimé de $ * et $@, $# est décrémenté de 1 #!/bin/sh %./show a b c d echo "$#; $1 $2 $3; $@" 4;a b c; a b c d Mamadou SOW 47 Chapitre XII- Programmation en Bourne Shell Exemples Résultats shift 3;b c d; b c d echo "$#; $1 $2 $3; $@" 2;c d;d c shift 1;d;d echo "$#; $1 $2 $3; $@" 0; ; shift echo "$#; $1 $2 $3; $@" shift echo "$#; $1 $2 $3; $@" L'emploi de shift nécessite que le shell script ait au moins un paramètre. XII.3 Liste des paramètres d'un shell script: $*, $@ $* Tous les paramètres passés au shell script sous la forme de mots individuels séparés $@ Tous les paramètres passés au shell scipt Soit un shell script que l'on appelle ainsi : ./foo "arg1" "deux mots" "arg3" $* est une liste de 4 éléments $@ est une liste de 3 éléments 1"arg1" 2"deux" 3" mots" 4"arg3" 1"arg1" 2"deux mots" 3"arg3" XII.4 Commandes internes du shell : builtins, type Le shell dispose de commandes internes dites aussi builtins : cd, set ... Ue méthode pour les identifier est d'utiliser la commande du Bourne shell type, [sow@localhost ~]$ type cd cd is a shell builtin [sow@localhost ~]$ type echo echo is a shell builtin [sow@localhost ~]$ type make make is /usr/bin/make Mamadou SOW 48 Chapitre XII- Programmation en Bourne Shell XII.5 Commande d'affichage : echo C'est commande d'affichage de caractères. Mais c'est aussi une vraie commande [sow@localhost ~]$ ls l /bin/echo rwxrxrx 1 root root 14740 oct 23 17:47 /bin/echo* La commande echo comprend des séquences semblables à celles de printf() Séquence Description \b Backspace \c Pas de newline \n Newline \r Carriage return \t Tabulation horizontale \v Tabulation verticale \\ Backslash \nnn Caractère dont le code octal ASCII est donnée Ex: #!/bin/sh #!/bin/sh echo n "Il y a" echo n "Il y a \c" n=`ls l | wc l` n=`ls l | wc l` echo " $n fichiers ici" echo " $n fichiers ici" XII.5 Entrée interactive : read La commande read permet de lire au clavier et placer les mots lus dans une liste de variables Syntaxe : read variablelist Le premier mot va dans la première variable, la deuxième mot dans la deuxième variable ... Tous les mots en trop sont stockés dans la dernière variable mentionnée. Mamadou SOW 49 Chapitre XII- Programmation en Bourne Shell Exemples Solutions %cat foo %./foo #!/bin/sh Unix MsDOS Windows 95 WindowsNT read var1 var2 Premier mot : Unix echo " Premier mot : $var1" Le reste : MsDOS Windows 95 WindowsNT echo "Le reste : $var2" %cat foo %./foo < /etc/motd #!/bin/sh while read line FreeBSD 2.2.26release do Welcomme to FreeBSD echo done XII.6 Structure ifthenelse Syntaxes if condition if condition if condition then then then commands1 commands1 commands1 fi else elif commands2 commands2 fi fi Le code retour de la commande détermine le test if Code de valant zéro Le test if est vrai Code de retour non nul Le test if est faux Mamadou SOW 50 Chapitre XII- Programmation en Bourne Shell Les autres formes de if : les opérateurs logiques du shell Et logique : Ou logique : command1 && command2 command1 || command2 if command1 if ! command1 then then command2 command2 fi fi Ex : Ex : #!/bin/sh #!/bin/sh ls foo && cat foo ls foo 2> /dev/null || echo "foo n'existe pas" XII.7 Structure case La commande case permet de tester une chaîne de caractères par rapport à un certain nombre d'autres chaînes prédéfinies, Syntaxe case value in pattern) commands1 ;; pattern) commands2 ;; esac Ex : #!/bin/sh echo n "Quitter ? >" read answer case "$answer" in Y* | y* ) ANSWER="YES";; N* | n* ) ANSWER="NO";; b?? ) ANSWER="MAYBE";; esac echo $ANSWER Mamadou SOW 51 Chapitre XII- Programmation en Bourne Shell XII.8 Commande test La commande test permet de réaliser divers tests Format Description f fichier True if fichier exists and is a regular file s fichier True if fichier exists and has a size greater than zero w fichier True if fichier exists and has write flag on x fichier True if fichier exists and has execute flag on Format Description n string True if length of string is non zero s1 = s2 True if the string s1 and s2 are identical s1 != s2 True if the string s1 and s2 are not identical n1 eq n2 True if the string n1 and n2 are algebrically equal n1 ne n2 True if the string n1 and n2 are not algebrically equal n1 gt n2 True if the string n1 is algebracally greater than the integer n2 n1 ge n2 True if the string n1 is algebracally greater or equal than the integer n2 n1 lt n2 True if the string n1 is algebracally less than the integer n2 n1 le n2 True if the string n1 is algebracally less than or equal the integer n2 Format Description ! expression True if expression is false expression1 a expression2 True if both expression1 and expression2 are true expresion1 o expression2 True if both expression1 or expression2 are true Mamadou SOW 52 Chapitre XII- Programmation en Bourne Shell La double forme de la commande test Forme normale Forme crochet #!/bin/sh #!/bin/sh if test $1 = hello if [ $1 = hello ] then then echo hello word echo hello word fi fi Ex: 1 #!/bin/sh if test $1 = hello then echo hello word fi 2 #!/bin/sh if [ $1 gt $2 o $1 eq $2 ] then echo $1 is greater than or equal to $2 fi 3 #!/bin/sh [ $# eq 0 ] && echo You entered no parameters XII.8 Structure de la boucle : while, for, until Syntaxes : while condition for variable in list until condition do do do commands1 commands1 commands1 done done done Mamadou SOW 53 Chapitre XII- Programmation en Bourne Shell Exemples : 1a %./foo a b "deux mots" d e #!/bin/sh a while [ "$1" ] b do deux mots echo $1 d shift e done 1b %./foo #!/bin/sh 5 compteur=5 4 while [ $compteur ge 0 ] 3 do 2 echo $compteur 1 compteur = `expr $compteur – 1` 0 done 3a %./foo a b "deux mots" d e #!/bin/sh a until [ "$1" = " "] b do deux mots echo $1 d shift e done 3b ,/foo #!/bin/sh 5 compteur=5 4 until [ $compteur lt 0 ] 3 do 2 echo $compteur 1 compteur=`expr $compteur 1` 0 done Mamadou SOW 54 Chapitre XII- Programmation en Bourne Shell XII.9 Contrôle du flux : break, continue Deux commandes du shell permettent de contrôler le flux d'exécution du code : break ou break n Cela permet de sortir prématurément d'un niveau de boucle ou <n> niveaux de boucles #!/bin/sh compteur=5 while : do [ $compteur lt 0 ] && break echo $compteur compteur=`expr $compteur 1` done On notera l'expression while :. le caractères ":" correspond à une instruction builtin du shell. Le code de retour est toujours 0. continue ou continue n Cela permet de retourner à la boucle sans finir le code de la boucle. #!/bin/sh for i in "$@" do [ d $i ] && continue echo "$i n'est pas un directory" done Mamadou SOW 55 Chapitre XII- Programmation en Bourne Shell XII.9 Redirection dans les boucles On peut réaliser des redirections au niveau des commandes if, while, until du shell et pas uniquement au niveau des commandes Unix. 1 2a #!/bin/sh for file in "$@" if true do then read line1 while read world1 rest_of_line read line2 do read line3 fi < $1 [ "$word1" = "Subject:" ] && \ { echo " $file $word1 $rest_of_line " ; break;} done < file done 2b #!/bin/sh compteur=0 while read BUFFER do compteur= `expr $compteur +1` echo "$compteur $BUFFER" done < $1 3 #!/bin/sh until [ "$world1" = ABORT ] do read world1 rest done < $1 XII.10 Fonction shell On peut écrire des fonctions au sein d'un shell script avec /bin/sh #!/bin/sh fonction () { commands } Mamadou SOW 56 Chapitre XII- Programmation en Bourne Shell Particularités : In n'y a qu'un environnement de #!/bin/sh variables au sein d'un shell foobar() script, Une variable créée au { sein d'une fonction peut donc a=33; echo "b=$b"; } être accédée en dehors du corps echo "a=$a" en dehors du corps du corps de b=2 cette fonction, Il n' y a pas de foobar notion de variable locale en echo "a=$a" général, %./foo a = b=2 a=33 Code de retour d'une fonction La commande return renvoie une valeur de retour pour la fonction shell #!/bin/sh Le code de retour d'une fonction shell suit la même convention que pour les commandes foobar() { return 1 } code de retour nul if foobar then echo Test positif else echo Test negatif fi code de retour la fonction s'est exécutée correctement la fonction a rencontré une condition logique d'erreur XII.11 Code de retour d'un shell script : exit XII.12 Debugging d'un shell : set x %cat foo %./foo + echo sow #!/bin/sh sow set x echo $USER Mamadou SOW 57 Chapitre XIII – Panorama de fichiers de configuration Chapitre XIII Panorama de fichiers de configuration Lors de la création des comptes, il ya des fichiers de configuration à déposer chez l'utilisateur. Lesquels ? que fontils ? Quels utilitaires les utilisentils ? XIII.1 Shell de login La commande login lance un shell de login On peut forcer le mode shell de login − avec bash : bash –login − avec tcsh : tcsh l − avec xterm : xterm ls ou xterm xrm '*loginShell: true' XIII.2 Shell interactif – Shell non interactif Un shell est interactif si les commandes sont saisies sur un terminal. Un shell est non interactif si les commandes sont lues dans un fichier. si le shell est non interactif, on n'exécutera pas les fichiers de commandes interactives et le shell sera initialisé plus simplement, − avec bash : bash –i − avec tcsh : tcsh i − avec sh : sh i − avec csh : csh i XIII.3 Fichiers d'initialisation pour le bash En mode shell login interactif (sauf contraire –noprofile) : − on exécute /etc/profile − on exécute le premier et seulement le premier fichier existant parmi $HOME/.bash_profile $HOME/.bash_login $HOME/.profile Mamadou SOW 58 Chapitre XIII – Panorama de fichiers de configuration En mode shell non interactif mais avec l'option –login (sauf option contraire –noprofile) : 1. on exécute /etc/profile 2. on exécute le premier et seulement le premier fichier existant parmi $HOME/.bash_profile $HOME/.bash_login $HOME/.profile En mode shell non de login interactif : on exécute $HOME/.bashrc Quand un shell login se termine on exécute $HOME/.bash_logout XIII.4 Fichiers d'initialisation pour sh En mode shell login 1. on exécute /etc/profile 2. on exécute $HOME/.profile XIII.5 Fichiers d'initialisation pour tcsh En mode shell login 1. on exécute /etc/csh.cshrc 2. on exécute /etc/csh.login 3. on exécute $HOME/.tcshrc (ou $HOME/.cshrc) 4. on exécute $HOME/.history 5. on exécute $HOME/.login 6. on exécute $HOME/.cshdirs En mode shell non delogin ou en mode non interactif 1. on exécute /etc/csh.cshrc 2. on exécute $HOME/.tcshrc (ou $HOME/.cshrc) Quand un shell de login se termine 1. on exécute /etc/csh.logout 2. on exécute $HOME/.logout Mamadou SOW 59 Chapitre XIII – Panorama de fichiers de configuration XIII.6 Fichiers d'initialisation pour csh En mode shell login 1. on exécute /etc/.login 2. on exécute $HOME/.cshrc 3. on exécute $HOME/.login 5. on exécute $HOME/.cshdirs Quand un shell de login se termine on exécute $HOME/.logout XIII.7 Fichiers d'initialisation pour le courrier électronique Le fichier $HOME/.forward sert au renvoi du courrier électronique vers une autre adresse. On y précise les adresses vers lesquelles renvoyer. Le fichier $HOME/.mailrc sert à configurer l'utilitaire de base Mail du courrier. On peut y préciser des alias de noms XIII.8 Fichiers de configuration pour l'environnement graphique X Pour l'environnement graphique de base sous Unix fichier $HOME/.xsession : script de démarrage donnant la applications à lancer par défaut sous − l'environnement graphique fichier $HOME/.xinitrc : le mieux est que ce fichier soit un lien symbolique vers le fichier $HOME/.xsession; si ce n'est pas le cas effacer le fichier et faire le lien − fichier $HOME/.Xresources : pseudo base de registres personnels pour le système de fenêtrage − fichier $HOME/.Xdefaults : le mieux est que ce fichier soit un lien symbolique vers le fichier $HOME/.Xresources; si ce n'est pas le cas effacer le fichier et faire le lien − Les environnements graphiques CDE, KDE, GNOME utilisent plusieurs fichiers de configuration regroupés dans plusieurs répertoires. En fait, on ne modifie pas manuellement ces fichiers. On passe par les outils graphiques de configuration qui se chargent de modifier les fichiers adhoc. Mamadou SOW 60 Chapitre XIII – Panorama de fichiers de configuration XIII.9 Régler son PATH Hypothèse 1 : on est sous Bourne Shell ou sous BASH Hypothèse 2 : on se rappelle le passage « variable d'environnement PATH vu dans le chapitre Pratique du Bourne Shell » Objectif : on veut modifier son PATH de façon permante. Solution : − On utilise le fichier « $HOME/.profile » avec un lien symbolique « £HOME/.bashrc » dessus. On règle ainsi (sh ou bash) cas du shell interactif de login cas du shell interactif non de login cas du shell non interactif On ajoute dans le fichier « $HOME/.profile » PATH=/repertoire1:/repertoire2:/....:/repertoireN export PATH ou PATH=$PATH:/chemin/vers/toto export PATH Mamadou SOW 61 Chapitre XIV- Langages de programmation Chapitre XIV Langages de programmation évolués XIV.1– Langage awk C'est un utilitaire recherchant des motifs dans un fichier et réalisant des opérations sur des lignes répondant aux critères. C'est plus généralement un mini langage de programmation à la syntaxe proche du langage C. Il est très souvent utilisé des filtres sur fichiers. Manuel disponible : ftp://ftp.imag.fr/pub/DOC.UNIX/AWK/awk.pdf XIV.2 Langage perl cf : http://www.cpan.org Langage de script : #!/usr/bin/perl wall print "Hello world " #exemple de "Hello world" Comme pour le langage C, une instruction se termine toujours par une virgule ; XIV.3 Langage python cf : http://www.python.org XIV.4 Langage SQL SQL = permet : − la définition et la modification du schéma de la base de données − la manipulation des données − l'interrogation des données − le contrôle des accès à la base Mamadou SOW 62 Chapitre XIV- Langages de programmation XIV.5 Langage HTML Fonctionnement informatique classique : modèle clientserveur Serveur = logiciel serveur web (apache, SII, etc.) Client = navigateur web (firefox, netscape) XIV.6 Les Bases de données 1 Oracle cf : http://www.oracle.com C'est la référence en base de données 2 MySql Logiciel libre. C'est la référence en bases de données dans le monde linux. cf : http://www.mysql.com 3 PostgreSQL Logiciel libre. Moins répandu que MySql cf : http://www.postgresql.com Mamadou SOW 63 Chapitre XV- Système de multi fenêtrage : X Chapitre XV Système de multi fenêtrage : X Système de fenêtrage (window system) : ensemble de programmes, de bibliothèques de programmation réalisant une interface homme/machine bâtie sur l'utilisation de divers équipements: − clavier − souris − écran graphique − autres périphériques (espace, plaquette graphique, ...) L'écran tente de réaliser un modèle de bureau. L'idée vient des travaux de Xerox, repris par Apple, repris par le projet Athena du MIT. Pour Unix, le système de multifenêtrage est un système appelé X ou X Window System ou X11. Sites de distribution : www.x.org, ftp.x.org, ftp.lip6.fr/pub/X11 Newsgroups : comp.windows.x. comp.windows.x.announce comp.windows.xapps comp.windows.x.i386unix comp.windows.x.intrinsics XV.1 Caractéristiques de X C'est un peu plus qu'un système de multifenêtrage : il est repari. L'interface homme permet de travailler sur plusieurs interface à la fois. X est constitué des parties suivantes : − serveur X C'est un programmes gérant le matériel (le plus souvent le triplet écranclaviersouris) et les autres composants logicielles : applications graphiques − des clients X Mamadou SOW 64 Chapitre XV- Système de multi fenêtrage : X Ce sont des applications utilisant un serveur X. Deux applications X essentielles : émulation graphique d'un terminal xterm, gestionnaire de fenêtres Ce sont les clients qui réalisent l'interface homme / machine de X (contrairement à Windows, à Mac Os où l'interface est inégrée au système d'exploitation). − le protocole X Il fait communiquer les clients et le serveur. − des bibliothèques graphiques pour X Elles réalisent le protocole et l'interface des clients. Le clavier peut être configurer si nécessaire par "xmodmap". L'écran est de type bitmap (affichage point). XV.2 DISPLAY Il s'agit d'un triplet écran – clavier – souris. Un DISPLAY a un nom et une adresse. L'adresse est une IP. Son nom ets de type "toutankamon:0.0". « 0.0 » désigne l'écran 0 de la machine. X permet de gérer des machines avec plusieurs (on dit multicéphales). Les ressources par défaut pour les applications sont enregistrées dans des fichiers. [sow@localhost appdefaults]$ pwd /usr/X11R6/lib/X11/appdefaults [sow@localhost appdefaults]$ ls l total 16 rwrr 1 root root 2109 sep 1 14:50 UXTerm rwrr 1 root root 509 sep 20 13:19 XPlaymidi rwrr 1 root root 6995 sep 1 14:50 XTerm rwrr 1 root root 4232 sep 1 14:50 Xtermcolor XV.3 Spécification des options aux clients X Il y a des options standart pour la plupart des clients (tout au moins ceux reposant sur l'emploi de la bibliothèque Xt). − couleur des caractères : "fg couleur" Mamadou SOW 65 Chapitre XV- Système de multi fenêtrage : X couleur de fond des fenêtres : "bg couleur" caractères : "fn font" XV.4 Personnalisation, Ressources X, xrdb, $HOME/.Xresources Tous les clients sont personnalisables au moyen de ressources X. Analogie avec la base de registre Windows Il existe 2 types de ressources − standart l'héritage de la bibliothèque de programmation Xt intrinsics très utilisée. Spécification des fontes, géométrie et ... − particulières à l'application comme xterm, la possibilité d'afficher l'ascenseur ou de spécifier le nombre de lignes à garder à l'affichage En ce qui concerne les ressources personnalisées par l'utilisateur, le fichier chez l'utilisateur les contenant est $HOME/.Xresources On trouve aussi $HOME/.Xdefaults La commande xrdb permet de manipuler les ressources chargés dans le serveur : %xrdb query > $HOME/ressources %vi $HOME/ressources %xrdb load %HOME/ressources XV.5 Configuration de la session X, $HOME/.xsesion, FAILSAFE Sur une station avec une mise d'accueil graphique, le script $HOME/.xsession est lancé lors de la connexion et il configure l'environnement graphique de l'utilisateur. La durée de vie de la session sous X est celle du script $HOME/.xsession. Les erreurs sont écrits dans $HOME/.xsessionerrors. En cas d'erreur grave dans $HOME/.xsession empêchant le démarrage de la session X, utiliser le mode Failsafe disponible via le menu de la fenêtre d'accueil de KDE ou GNOME 1 entrer le votre login 2 entrer le mot et valider par F1 non par la touche Retour Mamadou SOW 66 Chapitre XV- Système de multi fenêtrage : X Il apparaît al ors un simple xterm sans window manager à utiliser pour corriger les erreurs indiquées dans le fichier $HOME/.xsessionerrors. XV.6 Autorisation d'accès, xhost, MAGICCOOKIE, xauth, ssh La commande xhost permet de gérer de façon basique les accès au serveur : %xhost access control enabled, only authorized clients can connect %xhost + peterpan peterpan being added to access control list %xhost access control enabled, only authorized clients can connect INET : peterpan %xhost – peterpan peterpan being removed from access control list Qui peut connaître le cookie ? Celui qui peut accéder au contenu du fichier $HOME/.Xauthority. La sécurité de X repose dans ce cas sur la sécurité de filesystem [sow@localhost ~]$ ls l /home/sow/.Xauthority rw 1 sow sow 132 jan 6 11:51 /home/sow/.Xauthority Défauts du mécanisme du MAGICCOOKIE : 1 Le cookie transite en clair sur le réseau et peut donc être récupéré par un mouchard => Pas de réponse simple à ce problème 2 Que faire si $HOME/.Xauthority n'est pas disponible sur la machine distante ? => Utiliser la commande xauth %xauth extract $DISPLAY | rsh otherhost l otherusr xauth merge Mamadou SOW 67