Home

Bash-Beginners-Guide - Index général des HOWTOs et mini

image

Contents

1. 6 Afficher le contenu de la pile des r pertoires 7 Si ce n est pas d j le cas param trez l invite de sorte qu elle affiche votre localisation dans la hi rarchie syst me par exemple ajoutez cette ligne 4 bashrc export PS1 u lh w gt 8 Affichez les commandes m moris es dans la table hash de votre session de Shell en cours 9 Combien de processus sont en train de tourner sur votre syst me Utilisez ps et we la premiere ligne de r sultat de ps n est pas un processus 10 Comment afficher le nom du syst me Seulement le nom rien de plus Chapitre 2 Ecrire et corriger des scripts Table des mati res 1 Cr er et lancer un script 1 1 Ecrire et nommer 1 2 scripti sh 1 3 Ex cuter le script 2 Les bases du script 2 1 Quel Shell ex cutera le script 2 2 Ajout de commentaires 3 D bugger NdT corriger les scripts Bash 3 1 D bugger le script globalement 3 2 D bugger qu une partie du script 4 R sum 5 Exercices R sum A la fin de ce chapitre vous serez capable de Ecrire un script simple D finir le type de Shell qui doit ex cuter le script e Ajouter des commentaires Changer les permissions du script Ex cuter et d bugger un script 1 Cr er et lancer un script 1 1 Ecrire et nommer Un script Shell est une s quence de commandes dont vous avez un usage r p t Cette s quence est en principe ex cut e en entrant le nom du script sur la ligne de commande A
2. D Preserve all the copyright notices of the Document E Add an appropriate copyright notice for your modifications adjacent to the other copyright notices F Include immediately after the copyright notices a license notice giving the public permission to use the Modified Version under the terms of this License in the form shown in the Addendum below G Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document s license notice H Include an unaltered copy of this License I Preserve the section entitled History and its title and add to it an item stating at least the title year new authors and publisher of the Modified Version as given on the Title Page If there is no section entitled History in the Document create one stating the title year authors and publisher of the Document as given on its Title Page then add an item describing the Modified Version as stated in the previous sentence J Preserve the network location if any given in the Document for public access to a Transparent copy of the Document and likewise the network locations given in the Document for previous versions it was based on These may be placed in the History section You may omit a network location for a work that was published at least four years before the Document itself or if the original publisher of the version it refers to gives permission K In any section entitled Ack
3. M mail Envoie et recoit le courrier man Lit les pages man mcopy Copie des fichiers MS DOS depuis vers Unix mdir Affiche un r pertoire MS DOS memusage Affiche l tat d utilisation de la m moire memusagestat Affiche des statistiques d utilisation de la m moire mesg Contr ler l acc s en criture votre terminal mformat Ajoute un syst me de fichiers MS DOS une disquette format e en faible densit mkbootdisk Cr e une disquette de d marrage autonome du syst me local mkdir Cr un r pertoire mkisofs Cr un syst me de fichiers ISO9660 hybride more Filtre qui permet d afficher cran par cran mount Monte un syst me de fichiers ou affiche les informations sur les syst mes de fichiers mont s mozilla Navigateur WEB mt Contr le les op rations des p riph riques bande magn tique mtr Outil de diagnostic r seau Renomme des fichiers N named Serveur de nom de domaines INTERNET ncftp Programme de navigation dans les services ftp peu s r netstat Affiche les connections r seaux les tables de routage des statistiques d interface les connections masqu es nfsstat Affiche des statistiques sur les syst mes de fichiers r seau nice Modifie en file d attente la priorit d ex cution d un programme nmap Outil d exploration du r seau et scanner du point de vue s curit ntsysv Interface simple pour configurer les niveaux d ex cution P pas
4. Avec au lieu du point d exclamation la variable prend la valeur de l expansion de WORD si elle n existe pas rien ne se produit 3 3 2 Suppression de sous chaines Pour liminer d une variable un nombre de caract res gal OFFSET la syntaxe employer est VAR OFFSET LENGTH Le param tre LENGTH d finit combien de caract res garder partir du premier caract re apr s le d calage Si LENGTH est omis le reste du contenu de la variable est conserv bob in export STRING thisisaverylongname bob in echo STRING 4 isaverylongname bob in echo STRING 6 5 avery VAR WORD et VAR WORD Cette syntaxe est employ e pour liminer les correspondances du patron donn par l expansion de WORD de VAR WORD est interpr t pour donner un patron tout comme dans l expansion de nom de fichier Si le patron correspond au d but du r sultat d expansion de VAR alors le r sultat est la valeur de VAR r duit au plus court patron correspondant ou le plus long quand employ avec HH Si VAR est ou l op ration de suppression du patron est effectu e sur chaque param tre positionnel et l expansion est la liste r sultante Si VAR est une variable tableau index e par ou l op ration de substitution de patron est effectu e pour chaque l ment du tableau l un apr s l autre et l expansion est la liste r sultante Ceci est montr dans l exemple ci des
5. var val d environnement sh LL sa fichier case done esac exit n for do hash hash cmds hash r Bash nnnn 11 source fichier ou fichier alias x y case done esac exit n for do set f set o nullglob dotglob nocaseglob noglob hash hash cmds hash r history ArrowUp Enter ou Istr Tcmd s x y ksh nn 11 sa fichier alias x y case done esac exit n for do alias t alias t cmds history r str r x y cmd csh argv status source fichier alias x y switch ou case end endsw exit expr foreach noglob hashstat rehash unhash history 1 Istr Tcmd s x y Signification Action Les param tres peuvent tre r f renc s au del des 9 premiers Chaque argument est connu comme une valeur ind pendante Le nombre d arguments Statut d ex cution de la commande la plus r cente PID de la t che de fond la plus r cente Options classiques Lecture de commandes depuis un fichier Nom x est quivalent la commande y D cline diff rentes ventualit s Fini une instruction de boucle Marque la fin du case ou du switch Quitte avec un statut d ex cution Boucles sur plusieurs variables Ignore la substitution de caract res dans la g n ration de fichier Affiche les commandes hash trace
6. L FICHIER N FICHIER S FICHIER FILE1 nt FILE2 FILE1 ot FILE2 FILE1 ef FILE2 o OPTIONNAME I z STRING n STRING J or STRING STRING1 STRING2 STRING STRING2 STRING lt STRING2 STRING1 gt STRING2 ARG1 OP ARG2 sens Vrai si FICHIER existe et son bit collant est positionn Vrai si FICHIER existe et est un tube nomm FIFO Vrai si FICHIER existe et est lisible Vrai si FICHIER existe et a une taille sup rieure z ro Vrai si le descripteur de fichier FD est ouvert et qu il se r f re un terminal Vrai si FILE existe et son bit SUID Set User ID est positionn Vrai si FICHIER existe et est en criture Vrai si FICHIER existe et est ex cutable Vrai si FICHIER existe et appartient l identifiant effectif de l utilisateur Vrai si FICHIER existe et appartient l identifiant effectif du groupe Vrai si FICHIER existe et est un lien symbolique Vrai si FICHIER existe et qu il a t modifi depuis qu il a t lu Vrai si FICHIER existe et est un connecteur r seau socket Vrai si FILE1 a t modifi plus r cemment que FILE2 ou si FILE1 existe et FILE2 n existe pas Vrai si FILE1 est plus ancien que FILE2 ou si FILE2 existe et FILE1 non Vrai si FILE1 et FILE2 se r f re la m me entit et m me num ro d inode Vrai si l option Shell OPTIONNAME est activ e Vrai si la longueur
7. No such file or directory willy scripts gt touch willy scripts gt ls commented scripts sh scriptl sh willy scripts gt rm willy scripts gt ls commented scripts sh scriptl sh De fa on alternative ces modes peuvent tre indiqu s dans le script lui m me en ajoutant l option voulue sur la premi re ligne de d claration du Shell Les options peuvent tre combin es comme c est g n ralement le cas pour les commandes UNIX bin bash xv Une fois que vous avez localis la partie douteuse vous pouvez ajouter des instructions echo devant chaque commande douteuse de sorte que vous verrez exactement ot et pourquoi le r sultat n est pas satisfaisant Dans le script commented script1 sh a pourrait tre fait comme a toujours en supposant que l affichage des utilisateurs nous cause des soucis echo debug message avant ex cution de la commande w w Dans des scripts plus labor s echo peut tre ins r pour faire afficher le contenu de variables a diff rentes tapes du script afin de d tecter les erreurs echo Variable VARNAME a la valeur VARNAME 4 R sum Un script Shell est une s rie r utilisable de commandes saisies dans un fichier de texte ex cutable Tout type d diteur de texte peut tre utilis pour crire des scripts Un script commence par suivi par le chemin vers le Shell qui ex cutera les commandes qui viennent apr s Les commentaires sont ajout s au script po
8. mais la valeur de cette variable pour le parent reste la m me 2 4 Variables r serv es 2 4 1 Variables r serv es du Bourne Shell Bash utilise certaines variables Shell de la m me mani re que Bourne Shell Dans certains cas Bash assigne une valeur par d faut la variable La table ci dessous donne un aper u de ces variables Shell de base Tableau 3 1 Variables r serv es Bourne Shell Nom de variable CDPATH HOME IFS MAIL MAILPATH OPTARG OPTIND PATH PS1 PS2 2 4 2 Les variables r serv es de Bash D finition Une liste des r pertoires s par s par deux points utilis s comme chemin de recherche pour l int gr e cd Le r pertoire racine de l utilisateur actif le chemin par d faut pour l int gr e cd La valeur de cette variable est aussi utilis e par l expansion du tilde Une liste de caract res qui peuvent s parer les champs utilis par Shell pour d couper les mots lors du processus d expansion Si ce param tre est affect un nom de fichier et que la variable MAILPATH n est pas d finie Bash informe l usager de l arriv e d un mail dans le fichier sp cifi Une liste de fichiers s par s par deux points dont se sert le Shell r guli rement pour rechercher les nouveaux mails La valeur de l argument de la derni re option trait e par l int gr e getopts Le rang de l argument de la derni re option trait e par l int gr getopts Une li
9. 1 N 1 Disons que nous avons une commande qui a 10 param tres et N vaut 4 alors 4 devient 1 5 devient 2 et ainsi de suite 10 devient 7 et les anciens 1 2 et 3 sont limin s Si N est z ro ou sup rieur les param tres positionnels ne sont pas chang s le nombre total de param tres voir Section 2 1 2 Contr le des param tres de la ligne de commande et la commande n a pas d effet Si N est absent il est consid r valant 1 Le code renvoy est z ro moins que N soit sup rieur ou inf rieur z ro sinon il est diff rent de z ro 7 2 Exemples Une instruction shift est typiquement employ e quand le nombre de param tres d une commande n est pas connu par avance par exemple quand l usager peut donner autant de param tres qu il le souhaite Dans de tels cas les param tres sont g n ralement trait s dans une boucle while avec un test sur Ce test est vrai tant que le nombre de param tres est sup rieur z ro La variable 1 et l instruction shift traite chaque param tre Le nombre de param tres est diminu chaque fois que shift est ex cut e et finalement devient z ro sur quoi la boucle while s arr te L exemple suivant cleanup sh emploie l instruction shift pour traiter chaque fichier d une liste g n r e par find bin bash Ce script peut liminer des fichiers qui n ont pas t acc d s depuis plus de 365 jours USAGE Utilisation 0 dirl dir2
10. 2 1 les blocs if then else 2 2 Les blocs if then elif else 2 3 Les instructions if imbriqu es 2 4 Op rations bool ennes 2 5 Emploi de l instruction exit et du if 3 Utiliser les instructions case 3 1 Les conditions simplifi es 3 2 Exemple de script d initialisation 4 R sum 5 Exercices R sum Dans ce chapitre nous traiterons de l emploi de conditions dans les scripts Bash Ceci comprend les sujets suivants e L instruction if L usage du statut d ex cution d une commande Comparer et tester les entr es et des fichiers e les blocs if then else Les blocs if then elif else e Utiliser et tester les param tres positionnels Les instructions if imbriqu es Les expressions bool ennes e Utiliser les instructions case 1 Introduction de if 1 1 G n ralit A certains moments vous pouvez vouloir donner une alternative au traitement effectu par le script en fonction de l chec ou la r ussite d une commande Le bloc if permet de sp cifier de telles conditions La syntaxe la plus compacte de la commande if est if TEST COMMANDS then CONSEQUENT COMMANDS fi La liste TEST COMMAND est ex cut e et si elle retourne le statut z ro la liste CONSEQUENT COMMANDS est ex cut e Le statut retourn est le statut d ex cution de la derni re commande ex cut e ou z ro si aucune condition n est vraie Le TEST COMMAND souvent comprend des comparaisons de num riques ou de cha nes mais cela
11. 2 3 La commande print et les expressions r guli res Une expression r guli re peut tre utilis e comme patron en l enfermant entre slashs L expression r guli re est alors compar e chaque enregistrement de texte La syntaxe est celle ci awk EXPRESSION PROGRAM file s L exemple suivant affiche seulement les informations des disques locaux les syst mes de fichiers r seaux n y sont pas kelly is in gt df h awk dev hd print 6 t 5 6 boot 10 opt 84 usr 97 var 73 voll 8 kelly is in gt Le Slash doit tre prot g parce qu il a un sens sp cial pour le programme awk Ci dessous un autre exemple o nous cherchons dans le r pertoire etc les fichiers qui se terminent par conf et qui commencent par a ou x en employant des expressions r guli res tendues kelly is in etc gt ls l awk lt a x conf print 9 amd conf antivir conf xcdroast conf xinetd conf kelly is in etc gt Cet exemple illustre le sens sp cial du point dans les expressions r guli res le premier indique que nous voulons cibler tout caract re apr s la premi re cha ne cibl e le second est prot g parce que il fait partie d une cha ne cibler la fin du nom de fichier 2 4 Patrons particuliers Afin de faire pr c der le r sultat par un commentaire employer l instruction BEGIN kelly is in etc gt ls l awk BEGIN
12. 5 1 Que sont les alias Un alias permet de substituer un mot une cha ne de caract re quand il est utilis comme premier mot d une commande simple Le Shell maintient une liste d alias qui sont d clar s ou invalid s avec les int gr es alias et unalias Saisir alias sans options pour afficher une liste des alias connus du Shell courant franky gt alias alias cd alias cd alias ened sus alias PAGER less r alias Txterm export TERM xterm alias XARGS xargs r alias cdrecord cdrecord dev 0 0 0 speed 8 alias e vi alias egrep grep E alias ewformat fdformat n dev fd0u1743 ewfsck alias fgrep grep F alias ftp ncftp d15 alias h history 10 alias fformat fdformat dev fd0H1440 alias j jobs l alias ksane setterm reset alias ls ls F color auto alias m less alias md mkdir alias od od Ax ta txC alias p pstree p alias ping ping vcl alias sb ssh blubber alias sl ls alias ss ssh octarine alias sss ssh C serverl us xalasys com alias sssu ssh C l root serverl us xalasys com alias tar gtar alias tmp cd tmp alias unaliasall unalias a alias vi eval resize vi alias vt100 export TERM vt100 alias which type alias xt xterm bg black fg white amp franky gt Les alias sont utiles pour sp cifier une version par d faut d une commande qui existe en plusieurs versions sur le syst me ou pour sp cif
13. Glossaire Index Liste des illustrations 1 Couverture du Guide Bash du D butant 2 1 scripti sh 3 1 Diff rentes invites pour des utilisateurs diff rents 6 1 Les champs dans awk 7 1 Test d une ligne de commande avec if 7 2 Exemple employant les op rateurs bool ens Liste des tableaux 1 Conventions typographiques et d usage 1 1 Vue g n rale des termes de programmation 2 1 Aper u des options de d bug 3 1 Variables r serv es Bourne Shell 3 2 Les variables r serv es de Bash 3 3 Les variables Bash sp ciales 3 4 Op rateurs arithm tiques 4 1 Op rateurs d expression r guli re 5 1 Commandes d dition Sed 5 2 Options Sed 6 1 Caract res de formatage pour gawk 7 1 Expressions primitives 7 2 Combinaison d expressions 8 1 S quences d chappement reconnues par la commande echo 8 2 Options de l int gr e read 10 1 Options de l int gr e declare 12 1 Les signaux de contr le dans Bash 12 2 Signaux courants de kill A 1 Fonctionnalit s courantes du Shell A2 Diff rences de fonctionnalit s des Shell Introduction Table des mati res Pourquoi ce guide Qui devrait lire ce guide Nouvelles versions traductions et disponibilit Historique des r visions Contributions Observations et retours vari s information de Copyright De quoi avez vous besoin Conventions employ es dans ce document 10 Organisation de ce document DD ON OUI BW D m 1
14. Le Shell restreint environment variables Les variables Globales exporting Exporter les variables global variables Les variables Globales GLOBIGNORE Expansion de noms de fichier HISTFILE Le comportement d un Shell interactif HISTSIZE etc profile HOSTNAME etc profile IFS Le d coupage de mots MAIL etc profile PATH Le Shell restreint L ex cution de commandes scripti sh etc profile positional parameters Param tres sp ciaux POSIXLY_ CORRECT Mode POSIX PS2 Le comportement d un Shell interactif SHELL Le Shell restreint SHELLOPTS Le Shell restreint special parameters Param tres sp ciaux subshells Exporter les variables types Types de variables USER etc profile varibles local variables Variables locales W word splitting input field separator Le d coupage de mots
15. Les commandes apr s amp amp ne sont ex cut es que si le test rend vrai c est une fa on plus rapide de repr senter une structure if then fi Le code retour de la fonction est souvent utilis comme statut d ex cution de tout le script Vous verrez beaucoup de scripts d initialisation finissant avec quelque chose comme a exit RETVAL 1 4 Afficher une fonction Toutes les fonctions connues du Shell courant peuvent tre affich es avec l int gr e set sans options Une fonction est conserv e apr s avoir t appel e moins qu elle soit unset apr s son ex cution La commande which affiche aussi les fonctions lydia cointreau which zless zless is a function zless zcat PAGER lydia cointreau echo PAGER less Ceci est le type de fonctions qui sont typiquement configur es dans un fichier de configuration des ressources Shell de l utilisateur Les fonctions sont plus flexibles que les alias et fournissent un moyen simple et facile d adapter l environnement utilisateur En voici un pour les utilisateurs DOS dir ls F color auto 1F color always less r 2 Exemples de fonctions dans des scripts 2 1 Recyclage Il y a plein de scripts sur votre syst me qui utilisent des fonctions comme un moyen structur de passer une s rie de commandes Sur certains syst mes Linux par exemple vous trouverez le fichier de d finition etc rc d init d functions qui est invoqu dans
16. a Si oui r p ter tape 1 b Si non aller l tape 3 3 Fin L utilisateur va devoir saisir des donn es pour que le programme effectue quelque chose La saisie de l utilisateur doit tre sollicit e et m moris e L utilisateur devrait tre inform que son crontab va tre chang 5 5 Un exemple Bash script mysystem sh Le script mysystem sh ci dessous ex cute des commandes bien connues date w uname uptime pour afficher des informations au sujet de la machine et sur vous tom gt cat n mysystem sh bin bash 2 clear echo This is information provided by mysystem sh Le programme d marre maintenant 3 4 5 echo Bonjour USER 6 echo 7 8 echo Nous sommes le date semaine date V 9 echo 11 echo Ces utilisateurs sont actuellement connect s 12 w cut d f 1 grep v USER sort u 13 echo 15 echo uname s est le syst me uname m le processeur 16 echo 18 echo Le syst me fonctionne depuis 19 uptime 20 echo 22 echo C est pas plus compliqu Un script commence toujours par ces 2 caract res Suit le nom du Shell qui ex cutera les commandes suivant Ce script commence en effa ant l cran la ligne 2 La ligne 3 fait afficher un message pour informer l utilisateur de ce qui va se passer La ligne 5 salue l utilisateur Les lignes 6 9 13 16 et 20 ne sont l que pour a rer l affichage des r sultats La ligne 8 affiche la date
17. as such parties remain in full compliance 11 Future revisions of this license The Free Software Foundation may publish new revised versions of the GNU Free Documentation License from time to time Such new versions will be similar in spirit to the present version but may differ in detail to address new problems or concerns See http www gnu org copyleft Each version of the License is given a distinguishing version number If the Document specifies that a particular numbered version of this License or any later version applies to it you have the option of following the terms and conditions either of that specified version or of any later version that has been published not as a draft by the Free Software Foundation If the Document does not specify a version number of this License you may choose any version ever published not as a draft by the Free Software Foundation 12 How to use this License for your documents To use this License in a document you have written include a copy of the License in the document and put the following copyright and license notices just after the title page Copyright c YEAR YOUR NAME Permission is granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 1 or any later version published by the Free Software Foundation with the Invariant Sections being LIST THEIR TITLES with the Front Cover Texts being LIST and with the Back Cover
18. carol octarine testdir private sh Ce Script peut mettre un acc s priv tout fichier de ce r pertoire Entrez le num ro du fichier que vous voulez prot ger 1 archive 20030129 2 bash 3 private sh Vous avez s lectionn archive 20030129 1 D clarer l invite Ps3 et ajouter la possibilit de quitter l am liore bin bash echo Ce script peut mettre un acc s priv tout fichier de ce r pertoire echo Entrez le num ro du fichier que vous voulez prot ger PS3 Votre choix QUIT QUITTER CE PROGRAMME Je me sens plus en confiance l touch QUIT select FILENAME in do case FILENAME in QUIT echo Fin break 17 echo Vous avez s lectionn FILENAME REPLY chmod go rwx FILENAME esac j done rm QUIT 6 2 Sous menus Toute instruction dans une structure select peut tre un autre select ce qui autorise un des sous menu s dans un menu Par d faut la variable PS3 n est pas chang e dans une boucle select imbriqu e Si vous voulez une invite diff rente dans le sous menu assurez vous de la d finir aux bons moments 7 L int gr e shift 7 1 Qu est ce qu elle fait La commande shift est l une des int gr es Bourne Shell qui est fournie par Bash Cette commande prend un param tre un nombre Les param tres positionnels sont d cal s sur la gauche le nombre de fois N Les param tres positionnels de N 1 sont renomm s avec les noms de variable
19. correctement diff rent de z ro si une erreur s est produite Avec la commande kill de usr bin votre syst me peut activer des options suppl mentaires telles que la capacit de tuer des processus provenant d autres identifiants utilisateurs que le votre et celle de sp cifier les processus par leur nom comme avec pgrep et pkill Les 2 commandes kill envoient le signal TERM si aucun n est donn Voici une liste des principaux signaux Tableau 12 2 Signaux courants de kill Nom du signal Valeur du signal Effet SIGHUP I Suspend SIGINT 2 Interruption depuis le clavier SIGKILL 9 signal kill SIGTERM 15 signal d arr t d ex cution SIGSTOP 17 19 23 Stoppe le processus SIGKILL et SIGSTOP SIGKILL et SIGSTOP ne peuvent pas tre trapp s bloqu s ou ignor s Pour tuer un processus ou une s rie de processus il est de bon sens de commencer par essayer avec le signal le moins dangereux SIGTERM De cette fa on les programmes qui se soucient d un arr t correct ont une chance de suivre les proc dures qui leur ont t demand d ex cuter la r ception du signal SIGTERM tel que purger et fermer les fichiers ouverts Si vous envoyez un SIGKILL un processus vous retirez toute chance au processus d effectuer un arr t soign ce qui peut avoir des cons quences n fastes Mais si l arr t soign ne fonctionne pas le signal INT ou KILL peut tre le seul moyen Par exemple quand un processus ne meurt pas avec Ctr
20. guli res Les m tacaract res des expressions r guli res Trouver des patrons dans les fichiers et autres r sultats Les intervalles de caract res et les classes en Bash 1 Expressions r guli res 1 1 Qu est ce qu une expression r guli re Une expression r guli re est un patron qui recouvre un ensemble de cha nes de caract res Les expressions r guli res sont construites de fa on analogique aux expressions arithm tiques par l emploi de diverses op rateurs qui combinent d autres expressions r duites Les briques de base sont les expressions r guli res qui correspondent un seul caract re La plupart des caract res incluant toutes les lettres et les chiffres sont des expressions r guli res qui correspondent exactement elle m me Tout m tacaract re portant un sens sp cial peut tre prot g en le pr c dant d un slash invers 1 2 Les m tacaract res des expressions r guli res Une expression r guli re peut tre suivi par un ou plusieurs op rateurs de r p tition m tacaract re Tableau 4 1 Op rateurs d expression r guli re Op rateur Effet Correspond tout caract re 2 L l ment pr c dent est optionnel et sera pr sent au plus une fois ds L l ment pr c dent sera pr sent z ro fois ou plus L l ment pr c dent sera pr sent une fois ou plus N L l ment pr c dent sera pr sent exactement N fois N L l ment pr c dent sera pr sent N
21. me head Affiche le d but d un fichier help Affiche de l aide sur une commande Shell int gr e host Un outil d exploration DNS httpd Serveur au protocole de transfert d hypertexte Apache I id Affiche les v ritables UIDs et GIDs ifconfig Configure l interface r seau ou affiche la configuration info Lit les documents info init Initialisation du contr le de processus iostat Affiche des statistiques I O NdT Entr e Sortie ip Affiche modifie le statut de l interface r seau ipchains Gestion du pare feu IP iptables Gestion du filtre des paquets IP jar Outil d archivage java jobs Affiche les t ches de fond K kdm Le gestionnaire du bureau KDE kill all Fait se terminer le s processus ksh Ouvre un Shell Korn L Idapmodify Modifie une entr e LDAP Idapsearch Outil de recherche LDAP less more avec fonctionnalit s lilo Le chargeur d amorcage Linux links Navigateur WWW en mode texte In Cr e des liens entre fichiers loadkeys Charge les tables de correspondance clavier localiser Cherche des fichiers logout Quitte le Shell courant Ip Envoie des requ te au service d impression LP Ipe Programme de contr le de la ligne d impression Ipq Programme de contr le du fichier contenant la file d impression Ipr Impression diff r e Iprm Supprime une requ te d impression Is Affiche le contenu d un r pertoire lynx Navigateur WWW en mode texte
22. michel gt cat startsurf sh bin bash Ce script fournit aux usagers un moyen facile de choisir entre plusieurs navigateurs echo Voici les navigateurs WEB de ce syst me D but du document int gr cat lt lt BROWSERS mozilla links Lynx konqueror opera netscape BROWSERS Fin du document int gr echo n Lequel pr f rez vous read browser echo D marrage de browser Merci de patienter browser amp michel gt startsurf sh Voici les navigateurs WEB de ce syst me mozilla links Lynx konqueror opera netscape Lequel pr f rez vous opera D marrage de opera Merci de patienter Bien que nous parlions de document int gr il doit tre un bloc dans le script Voici un exemple qui installe un paquetage automatiquement m me si vous devriez normalement confirmer bin bash Ce script installe un paquetage automatiquement avec yum if lt 1 then echo Utilisation 0 package exit 1 fi yum install 1 lt lt CONFIRM y CONFIRM Et voici comment le script tourne Quand la question Is this ok y N apparait le script r pond y automatiquement root picon bin install sh tuxracer Gathering header information file s from server s Server Fedora Linux 2 i386 core Server Fedora Linux 2 i386 freshrpms Server JPackage 1 5 for Fedora Core 2 Server JPackage 1 5 generic Server Fedora Linux 2 i386 updates Find
23. s Le Shell lit les commandes de chaque ligne du script et cherche ces commandes dans le syst me voir Section 2 Avantages du Bourne Again SHell alors qu un compilateur convertit un programme en une forme lisible par la machine un fichier ex cutable lequel peut alors tre employ dans un script A part de passer des commandes au noyau la t che principale du Shell est de mettre en place un environnement utilisateur qui peut tre configur individuellement par le biais de fichiers de configuration 1 2 Types de Shell Tout comme les gens connaissent une vari t de langages votre syst me UNIX g n ralement offre une vari t de types de Shell sh ou Bourne Shell le Shell originel toujours en vigueur sur les syst mes UNIX et sur les environnements de type UNIX C est le Shell de base un petit programme avec peu de possibilit s Bien que ce ne soit pas le Shell standard il est toujours disponible sur les syst mes Linux par souci de compatibilit des programmes UNIX bash ou Bourne Again shell le Shell standard GNU intuitif et souple Probablement celui conseiller aux d butants tout en tant un outil puissant pour un usage pouss et professionnel Sur Linux bash est le Shell standard pour l utilisateur courant Ce Shell est r put tre un sur ensemble du Bourne Shell un ensemble d ajouts et d extensions Ce qui veut dire que le Bourne Again Shell est compatible avec le Bourne Shell les command
24. sbin bin sync shutdown x 6 0 shutdown sbin sbin shutdown halt x 7 0 halt sbin sbin halt news x 9 13 news var spool news mailnull x 47 47 var spool mqueue dev null xfs x 43 43 X Font Server etc X11 fs bin false rpc x 32 32 Portmapper RPC user bin false nscd x 28 28 NSCD Daemon bin false named x 25 25 Named var named bin false squid x 23 23 var spool squid dev null ldap x 55 55 LDAP User var lib ldap bin false apache x 48 48 Apache var www bin false cathy gt grep c false etc passwd 7 cathy gt grep i ps bash grep v history home cathy bashrc PS1 033 1 44m USER is in w 033 0m Avec la premi re commande l utilisateur cathy affiche les lignes de etc passwd contenant la cha ne root Puis elle affiche le num ro des lignes contenant cette cha ne Avec la troisi me commande elle v rifie quels utilisateurs n utilisent pas bash mais les comptes avec nologin ne sont pas affich s Puis elle compte le nombre de comptes qui ont bin false comme Shell La derni re commande affiche les lignes de tous les fichiers dans son r pertoire racine qui commencent par bash excluant les correspondances avec history afin d exclure des correspondances de bash_ history qui pourrait contenir la m me cha ne en majuscule et minuscule Remarquez que la recherche se fait sur la cha ne ps et pas sur la commande ps Maintenant voyons ce que nous pouvons faire d autre avec grep et de
25. une copie de sauvegarde de chaque fichier xmt Une fois cette commande ex cut e il est plus s r de travailler sur les sources carol octarine articles ls xml filel xml file2 xml file3 xml carol octarine articles ls xml gt list carol octarine articles for i in cat list do cp i i bak done carol octarine articles ls xml filel xml filel xml bak file2 xml file2 xml bak file3 xml file3 xml bak Celui ci liste les fichiers de sbin qui sont des purs fichiers texte et donc peut tre des scripts for i in ls sbin do file sbin i grep ASCII done 1 2 2 Utiliser la valeur d une variable pour sp cifier les l ments de LIST Ce qui suit est un script sp cifique pour convertir des fichiers HTML respectant un certain sch ma en fichiers PHP La conversion est faite en extrayant les 25 premi res lignes et les 21 derni res les rempla ant par 2 tiquettes PHP qui correspondent aux lignes d ent te et d empied carol octarine html cat html2php sh bin bash specific conversion script for my html files to php LIST ls html for i in LIST do NEWNAME 1ls i sed e s html php cat beginfile gt NEWNAME cat i sed e 1 25d tac sed e 1 21d tac gt gt NEWNAME cat endfile gt gt NEWNAME one Comme nous ne faisons pas un comptage des lignes il n y a pas moyen de savoir le num ro de ligne laquelle commencer la suppression avant d avo
26. 0 40 USER TTY FROM LOGIN IDLE JCPU PCPU WHAT root tty2 Sat 2pm 5 36m 0 24s 0 05s bash willy 0 Sat 2pm 0 00s Sat 2pm 43 13 36 825 36 825 BitchX willy ir Sat 2pm 43 13 0 13s 0 06s usr bin screen willy pts 3 willy pts 2 echo echo Je d finis 2 variables maintenant Je d finis 2 variables maintenant COLOUR noir VALUE 9 echo Ceci est une cha ne Ceci est une chaine echo Et ceci est un nombre Et ceci est un nombre echo echo Je vous redonne la main maintenant Je vous redonne la main maintenant echo Fonctionnalit s venir du Bash Il y a maintenant un d bugger complet pour Bash disponible sur SourceForge Cependant cela n cessite une version modifi e de bash 2 05 Cette fonctionnalit devrait tre disponible dans la version bash 3 0 3 2 D bugger qu une partie du script Avec l int gr e set vous pouvez ex cuter en mode normal ces portions de code o vous tes s r qu il n y a pas d erreurs et afficher les informations de d buggage seulement pour les portions douteuses Admettons que nous ne soyons pas s r de ce que fait la commande w dans l exemple commented script1 sh alors nous pouvons l entourer dans le script comme ceci set x active le mode d bug w set x stoppe le mode d bug La sortie affiche alors ceci willy scripts gt script1 sh Le script d marre Salut willy Je vais maintenant vous afficher une liste de
27. D bugger le script globalement example Un exemple Bash script mysystem sh script1 sh executing shell Quel Shell ex cutera le script execution Ex cuter le script init script example Exemple init script NdT d initialisation init scripts Exemple init script NdT d initialisation logic Un mot sur l ordre et la logique logic flow example Un mot sur l ordre et la logique naming crire et nommer permissions Ex cuter le script structure Structure terminology Terminologie shell expansion Le processus d expansion de Shell general functions Les fonctions du Shell en g n ral interactive Qu est ce qu un Shell interactif parameters Les param tres Shell permuter entre Shells Types de Shell redirections Redirections syntax La syntaxe Shell types Types de Shell special parameters examples Param tres sp ciaux T tilde expansion syntax L expansion du tilde V variable and parameter expansion example Param tre Shell et expansion de variable variables advantages Script finalit s multiples gr ce aux variables BASH_ENV Invoqu non interactivement Le Shell restreint Bash reserved Les variables r serv es de Bash Bourne shell reserved Variables r serv es du Bourne Shell content types Variables typ es selon leur contenu creation Cr er des variables definition Les param tres Shell detect content assignment Changer les options DIRSTACK Pile de r pertoires ENV Invoqu avec la commande sh
28. Les fichiers d initialisation du Shell 1 1 Les fichiers de configuration qui agissent sur tout le syst me 1 1 1 etc profile Quand il est invoqu interactivement avec l option login ou si il est invoqu en tant que sh Bash lit les instructions de etc profile Ceci habituellement d finit les variables Shell PATH USER MAIL HOSTNAME et HISTSIZE Sur certains syst mes la valeur umask est d finie dans etc profile sur d autres ce fichier indique d autres fichiers de configuration tels que etc inputrc le fichier d initialisation du syst me Readline o vous pouvez configurer le style de son de la ligne de commande e le r pertoire etc profile d qui contient les fichiers configurant le comportement de programmes sp cifiques dans tout le syst me Tous les param trages de l environnement des utilisateurs devraient tre dans ce fichier Cela peut ressembler a etc profile Environnement g n ral du syst me et programmes de d marrage pour le param trage du login PATH PATH usr X11R6 bin No core files by default ulimit S c 0 gt dev null 2 gt amp 1 USER id un LOGNAME USER MAIL var spool mail USER HOSTNAME bin hostname HISTSIZE 1000 Clavier sonnerie style d affichage le fichier de configuration readline if z INPUTRC a f HOME inputrc then INPUTRC etc inputrc fi PS1 u h W export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC PS1 S
29. Pourquoi ce guide La raison premi re de ce document est que beaucoup de gens trouvent le HOWTO trop court et incomplet et le guide Bash Scripting trop pouss Il n y a rien entre ces deux extr mes J ai aussi crit ce guide selon le principe g n ral que les guides de base devraient tre gratuits alors que peu le sont C est un guide pratique qui sans tre toujours s rieux essaye de donner des exemples d usage plut t que th oriques Je l ai en partie crit parce que je ne suis pas emball e par les exemples d pouill s hyper simplifi s crits par des gens qui sachant de quoi ils parlent montrent de super possibilit s du Bash tellement hors contexte que vous ne pouvez vous imaginez leurs applications pratiques Vous pouvez lire ce genre de documents apr s ce guide lequel contient exercices et exemples qui aideront a survivre dans la vraie vie De par mon exp rience en tant qu utilisateur administrateur et formateur sur syst me UNIX Linux je sais que des gens peuvent avoir des ann es d interactions quotidiennes avec leur syst me sans avoir la moindre notion de l automatisation de t ches De sorte qu ils pensent souvent que UNIX n est pas convivial et pire ils ont l impression que c est lent et obsol te Cette difficult est de celles que peut palier ce guide 2 Qui devrait lire ce guide Quiconque qui travaillant sur un syst me de type UNIX veut se simplifier la vie Utilisateurs avanc s ou administrateurs p
30. accept e mais le num ro d index sera ignor Des attributs du tableau peuvent tre sp cifi s en employant les int gr es declare et readonly Les attributs s appliquent toutes les variables du tableau vous ne pouvez avoir des tableaux mitig s Les variables de tableau peuvent aussi tre cr es avec une affectation compos e selon ce format ARRAY valuel value2 valueN Chaque valeur est alors de la forme indexnumber string Le num ro d index est optionnel Si il est fourni l index prend la valeur du num ro sinon l index de l l ment affect est le num ro du dernier index assign plus un Le format est accept par declare galement Si aucun num ro d index n est fourni l indexation commence z ro Ajouter un l ment manquant ou supl mentaire un tableau se fait avec la syntaxe ARRAYNAME indexnumber value Se rappeler que l int gr e read poss de l option a qui autorise la lecture et l affectation de valeurs des l ments d un tableau 2 2 Invoquer les variables d un tableau Afin de se r f rer au contenu d un l ment du tableau employer le symbole accolade C est n cessaire comme vous le voyez dans l exemple suivant pour chapper l interpr tation du Shell des op rateurs d expansion Si le num ro d index est ou tous les l ments du tableau sont consid r s bob in ARRAY one two three bob in echo ARRAY one two three bob in echo ARRAY on
31. arithm tique quand elle est r f renc e Une variable Shell doit avoir l attribut entier positionn pour tre utilis e dans une expression Une constante commen ant par un 0 z ro est consid r e comme un chiffre octal Un ox ou OX au d but marque l hexad cimal Sinon un nombre prend la forme BASE N o BASE est un nombre d cimal entre 2 et 64 repr sentant la base arithm tique et N un nombre dans cette base Si BASE est omis alors la base 10 est utilis e Les chiffres sup rieurs 9 sont repr sent s par les minuscules les majuscules et _ dans cet ordre Si BASE est inf rieur ou gale 36 les minuscules et les majuscules sont interchangeables dans leur repr sentation des chiffres entre 10 et 35 Les op rateurs sont valu s par ordre de priorit Les sub expressions entre parenth ses sont valu es d abord ce qui peut pr valoir sur l ordre de priorit ci dessus Autant que possible les utilisateurs de Bash devraient essayer d utiliser la syntaxe avec les crochets EXPRESSION Cependant ceci ne fait qu valuer l EXPRESSION et ne teste pas franky gt echo 365 24 8760 Voir Section 1 2 2 Comparaisons num riques entre autres pour des exemples pratiques de scripts 4 7 La substitution de processus La substitution de processus est effectu e par les syst mes qui admettent les tubes pipes nomm s FIFO NdT First In Firs
32. aucune option fait afficher une liste de toutes les variables y compris les variables d environnement et les fonctions L affichage sera tri et dans un format r utilisable Ci dessous un fichier diff obtenu par comparaison entre l affichage de printenv et de set apr s l avoir expurg des fonctions qui sont aussi affich es par set franky gt diff set sorted prantenv sorted grep lt awk print 2 BASE nethome f ranky Shell hq xalasys com octarine aliases BASH bin bash BASH_VERSINFO 0 2 BASH VERSION 2 05b 0 1 release COLUMNS 80 DIRSTACK DO FORTUNE EUTD 504 GROUPS HERE home franky HISTFILE nethome franky bash history HOSTTYPE i686 IFS LINES 24 MACHTYPE i686 pc Linux gnu OPTERR 1 OPTIND 1 OSTYPE Linux gnu PIPESTATUS 0 0 PPID 10099 PS4 PWD_REAL pwd SHELLOPTS braceexpand emacs hashall histexpand history interactive comments monitor a UID 504 Awk L outil GNU Awk est expliqu au Chapitre 6 Le langage de programmation GNU awk 2 1 3 Variables typ es selon leur contenu A part distinguer les variables selon leur port e locale globale nous pouvons aussi les distinguer par cat gories selon ce qu elles contiennent De ce point de vue les variables se distinguent en 4 types e Variables de cha ne de caract res NdT nous dirons simplement cha ne par la suite e Variables d entier e Variables de constantes e Variables ta
33. bashrc then bashrc fi Voir Chapitre 7 Les instructions de condition pour plus d informations sur la construction if 2 2 2 3 Invoqu non interactivement Tous les scripts utilisent un Shell non interactif Ils sont programm s pour faire certaines t ches et ne peuvent tre utilis s pour faire autre chose que ce pour quoi ils ont t pr vus Fichiers lus e d finis par BASH_ENV PATH n est pas utilis pour la recherche de ces fichiers donc mettre le chemin complet dans la variable si vous souhaitez en faire usage 2 2 2 4 Invoqu avec la commande sh Bash essaye de se comporter comme le programme historique Bourne sh tout en se conformant la norme POSIX Fichiers lus etc profile profile Quand il est invoqu de facon interactive la variable ENV peut pointer vers des informations de d marrage supl mentaires 2 2 2 5 Mode POSIX Cette option est activ e soit en employant l int gr e set set 0 posix ou en appelant le Bash avec l option posix option Bash essayera alors de respecter autant que possible la norme POSIX des Shell D clarer la variable POSIXLY_CORRECT fait la m me chose Fichiers lus e d finis par la variable ENV 2 2 2 6 Invoqu a distance Fichiers lus quand le Shell est invoqu par rshd e bashrc Eviter l usage d outils distance Ayez l esprit les dangers de ces outils tels que rlogin telnet rsh et rcp Leur usage pr sente des risque
34. break quand l usager frappe o Dans les boucles imbriqu es break autorise la sp cification de la boucle dont il faut sortir Voir les pages Bash info pour plus de d tails 5 2 L int gr e continue L instruction continue repart l it ration d une boucle for while until ou select Quand elle est utilis e dans une boucle for la variable de contr le prend la valeur de l l ment suivant de la liste Quand elle est utilis e dans une structure while ou until contrario l ex cution repart avec la premi re commande de TEST COMMAND en haut de la boucle 5 3 Exemples Dans les exemples suivants les noms de fichiers sont convertis en minuscule Si la conversion n est pas n cessaire une instruction continue recommence l ex cution de la boucle Ces commandes ne consomment pas trop de ressources syst me et la plupart du temps un effet similaire peut tre obtenu avec sed et awk Cependant il est utile de conna tre ces structures pour l ex cution de travaux co teux cela ne serait sans doute pas n cessaire si les tests taient positionn s aux bons endroits dans le script en partageant les ressources syst me carol octarine test cat tolower sh bin bash Ce script convertit tous les noms de fichiers contenant des majuscules en nom de fichier contenant qu LIST 1s for name in LIST do if name upper then continue fi ORIG name NEW echo name tr A Z a z
35. de d clarer une variable puis d ex cuter un script il est fr quemment plus l gant de mettre la valeur de la variable dans la ligne de commande Pour ce faire nous employons les param tres positionnels 1 2 N m morise le nombre de param tres de la ligne de commande 0 m morise le nom du script Voici un exemple simple Figure 7 1 Test d une ligne de commande avec if anny octarine testdir File Edit View Terminal Go Help cat penguin sh s you present different menus to Hmmmmmm fis Hmmmmmm Voici un autre exemple avec 2 param tres anny gt cat weight sh bin bash Ce script affiche un message au sujet de votre poids si vous donnez votre poids en kilos et votre taille en centim tres weight 1 height 2 idealweight height 110 if weight le idealweight then echo Vous devriez manger un peu plus gras else echo Vous devriez manger un peu plus de fruits fi anny gt bash x weight sh 55 169 weight 55 height 169 idealweight 59 55 le 59 echo Vous devriez manger un peu plus gras ous devriez manger un peu plus gras lt 2 1 3 Tester le nombre de param tres L exemple suivant montre comment changer le script pr c dent de sorte qu il affiche un message si plus ou moins de 2 param tres sont donn s anny gt cat weight sh bin bash Ce script affiche un message au sujet de votre poids si vous donnez votre poi
36. dir3 dirN if 0 then echo USAGE exit 1 fi while do if 1s 1 then echo R pertoire vide rien a faire else find 1 type f a atime 365 exec rm i i shift done exec versus xargs La commande find ci dessus peut tre remplac e par ce qui suit find options xargs commandes executer sur fichiers trouves La commande xargs construit et ex cute des lignes de commandes depuis l entr e standard Ceci pr sente l avantage que la ligne de commande est renseign e jusqu ce que la limite du syst me soit atteinte Seulement ce moment la commande ex cuter sera lanc e dans l exemple ci dessus ce serait rm Si il y a plus de param tres une nouvelle ligne de commande sera utilis e jusqu ce qu elle soit elle aussi pleine ou jusqu ce qu il n y ait plus de param tres La m me chose avec find exec appelle la commande ex cuter sur chaque fichier trouv Donc l usage de xargs acc l re grandement l ex cution des scripts et am liore les performances de votre machine Dans l exemple suivant nous avons modifi le script de la Section 2 4 4 Les documents int gr s NAT here documents que l on appele aussi document li afin qu il accepte de multiples paquets installer d un coup bin bash if lt 1 then echo Utilisation 0 package s exit 1 fi while do yum install 1 lt lt CONFIRM y C
37. e Bash source est un synonyme de la commande Bourne shell dot Le script n a pas besoin de permission d ex cution dans ce cas Les commandes sont ex cut es dans l environnement du Shell actif par cons quent tout changement restera tel quel quand le script aura termin willy scripts gt source scriptl sh output ommitted willy scripts gt echo VALUE 9 willy scripts gt 2 Les bases du script 2 1 Quel Shell ex cutera le script Quand un script s ex cute dans un sous Shell vous devriez d finir quel Shell doit ex cuter ce script Le type de Shell pour lequel vous avez crit le script peut ne pas tre celui par d faut de votre syst me alors les commandes peuvent ne pas tre interpr t es par un Shell inad quat La premi re ligne du script d finit le Shell lancer Les 2 premiers caract res de la premi re ligne devraient tre puis suit le chemin vers le Shell qui doit interpr ter les commandes qui suivent Les lignes blanches sont aussi prises en compte donc ne commencez pas votre script par une ligne vide Dans ce guide tous les scripts commenceront par la ligne bin bash Comme indiqu auparavant ceci implique que le programme Bash doit se trouver dans bin 2 2 Ajout de commentaires Vous devriez vous rappeler que vous ne serez peut tre pas la seule personne lire votre code Beaucoup d utilisateurs et d administrateurs syst me lancent des scripts qui ont t crits
38. est ferm chaque fois que l utilisateur a besoin d utiliser le p riph rique d entr e standard habituellement le clavier Suit un exemple simple de redirection du standard d erreurs sur un tube michel gt cat Listdirs sh bin bash Ce script garde le standard de sortie tandis qu il redirige le standard d erreurs afin d tre trait par awk INPUTDIR 1 fd 6 targets fd 1 target console out in current shell exec 6 gt amp 1 fd 1 targets pipe fd 2 targets fd 1 target pipe fd 1 targets fd 6 target console out fd 6 closed execute ls ls INPUTDIR 2 gt amp 1 gt amp 6 6 gt amp Closes fd 6 for awk but not for ls awk BEGIN FS print YOU HAVE NO ACCESS TO 2 6 gt amp fd 6 closed for current shell exec 6 gt amp 2 4 4 Les documents int gr s NdT here documents que l on appele aussi document li Fr quemment votre script peut avoir besoin d appeler un autre programme ou script qui n cessite une entr e Le document int gr fournit un moyen d enjoindre au Shell de lire l entr e de la source actuelle jusqu une ligne contenant seulement la cha ne ad hoc pas de blancs r siduels Toutes les lignes lues jusqu celle l sont envoy es comme entr e standard de la commande Le r sultat est que vous n avez pas besoin de faire appel diff rents fichiers vous pouvez utiliser les caract res sp ciaux du Shell et c est plus lisible qu un flot d echo
39. et disponibilit La derni re dition se trouve http tille xalasys com training bash Vous devriez aussi la trouver http tldp org LDP Bash Beginners Guide html index html Ce guide est disponible imprim chez Fultus com Figure 1 Couverture du Guide Bash du D butant Machtele Garrels de bash gui tS for aa 224 inners peg n Ce guide a t traduit Traduction chinoise at http xiaowang net bgb cn par Wang Wei Traduction ukrainienne at http docs linux org ua index php LDP Bash beginners guide par Yaroslav Fedevych et son quipe Une traduction fran aise en cours relire 4 Historique des r visions Historique des versions Version 1 9 fr 1 1 2007 04 23 Y JPG Relectures de Marc Blanc et Jerome Blondel Version 1 9 fr 1 0 2007 04 01 Y JPG Premi re version francaise Version 1 9 2006 10 10 MG Remarques des lecteurs ajout es index ajout en utilisant les tags DocBook Version 1 8 2006 03 15 MG Exemple clarifi au Chap 4 correction du document ici au Chap 9 corrections typographiques ajout d un lien vers les traductions chinoises et ukrainienne note et chose savoir au sujet de awk au Chap 6 Version 1 7 2005 09 05 MG Correction de typographie au Chap 3 6 et 7 remarques de lecteurs ajout es ajout d une note au Chap 7 Version 1 6 2005 03 01 MG Debuggage mineur ajout de mots cl s note au sujet du nouveau Bash 3 0 retrait d une image vierg
40. et langage de traitement du texte B Bash Bourne Again SHell batch Place en file d attente examine ou supprime des travaux en attente d ex cution bg Lance un travail en t che de fond bitmap Editeur Bitmap et outils de conversion pour le syst me X window bzip2 Un compresseur de fichier qui trie sur les blocs cat Concat ne des fichiers et affiche sur la sortie standard cd Change de r pertoire cdp cdplay Un programme interactif en mode texte pour contr ler et couter des CD Rom audio sous Linux cdparanoia Un outil de lecture de CD audio qui inclut des fonctionnalit s suppl mentaires de v rification de donn es cdrecord Enregistre un CD R chattr Modifie les attributs de fichiers chgrp Modifie le groupe propri taire chkconfig Modifie ou affiche les informations de niveau d ex cution NAT run level des services syst mes chmod Change les permissions d acc s aux fichiers chown Modifie le propri taire et le groupe d un fichier compress Comprime des fichiers cp Copie des fichiers et des r pertoires crontab Gestion des fichiers de crontab csh Ouvre un Shell C cut Elimine des sections de chaque ligne de fichiers D date Affiche ou d finit la date et l heure syst me dd Convertit et copie un fichier vidage affichage du contenu du disque df Affiche le pourcentage d utilisation des disques du syst me de fichiers dhcpcd D mon client de DHCP diff Trou
41. exemple am liorant le script leaptest sh du chapitre pr c dent michel test gt cat leaptest sh bin bash Ce script teste si vous avez saisi une ann e bissextile ou pas echo Saisissez une ann e que vous voulez tester 4 chiffres puis appuyer sur ENTREE read year if year 400 0 year 4 0 amp amp year 100 O then echo ann e bissextile else apres ann e non bissextile i michel test gt leaptest sh Saisissez une ann e que vous voulez tester 4 chiffres puis appuyer sur ENTREE 2000 2000 ann e bissextile 2 2 Demander une entr e utilisateur L exemple suivant montre comment vous pouvez vous servir de l invite pour expliquer ce que l utilisateur devrait saisir michel test gt cat friends sh bin bash Ce programme garde votre carnet d adresse a jour friends var tmp michel friends echo Bonjour USER Ce script vous enregistrera dans la base de donn es des amis de Michel echo n Saisir votre nom et appuyer sur ENTREE r read name echo n Saisir votre sexe et appuyer sur ENTREE read n 1 gender echo grep i name friends if 0 then echo Vous tes d j enregistr termin exit 1 elif gender m then echo Vous tes ajout la liste des amis de Michel exit 1 else echo n Quel ge avez vous read age if age lt 25 then echo n De quelle couleur sont vos cheve
42. fa ons de lancer awk Si le programme est court il est plus facile de le lancer depuis la ligne de commande awk PROGRAM inputfile s Si de multiples changements doivent tre fait peut tre r guli rement sur de multiples fichiers il est plus facile de m moriser les commandes awk dans un script Ce qui se lit comme ceci awk f PROGRAM FILE inputfile s 2 Le programme d affichage 2 1 Afficher les champs s lectionn s La commande print de awk affiche les donn es s lectionn es depuis le fichier d entr e Quand awk lit une ligne d un fichier il divise la ligne en champs bas sur le s parateur de champs en entr e FS qui est une variable awk voir Section 3 2 Les s parateurs de r sultat Cette variable est pr d finie avec un ou plusieurs espaces et tabulations Les variables 1 2 3 N stockent les valeurs du premier second troisi me jusqu au dernier champ de la ligne trait e La variable 0 z ro stocke la valeur de la ligne enti re Ceci est illustr dans l image ci dessous o nous voyons 6 colonnes dans l affichage de la commande df Figure 6 1 Les champs dans awk File Edit View Terminal Go Help kelly octarine kelly df h Filesystem Size Used Avail Use Mounted on dev hda7 1 3G 274M 1016M 22 121M 9 4M 105M 9 boot 13G 8 7G 3 7G 70 home 13G 5 6G 6 8G 45 opt 243M O 243M 0 dev shm dev hda6 3 9G 3 3G 480M 88 usr dev hda5 5 2G 4 6G 431M 92 var r mt u y M a
43. facilement et correctement Au moment d crire un nouveau script posez vous les questions suivantes e Aurai je besoin d informations de la part de l utilisateur ou de son environnement Comment vais je m moriser ces donn es Des fichiers doivent ils tre cr s O et avec quel propri taire et quelles permissions Quelles commandes utiliserais je Si le script est ex cut sur diff rents syst mes est ce que tous ces syst mes ont les commandes dans la version requise L utilisateur a t il besoin que le script lui renvoie des informations Quand et pourquoi 5 3 Terminologie La table ci dessous donne un aper u des termes de programmation avec lesquels vous devez vous familiariser Tableau 1 1 Vue g n rale des termes de programmation Termes Qu est ce que c est Contr le de commande Test du statut d ex cution NdT code retour d une commande pour d terminer si une portion du code doit tre ex cut e ou pas Branchement conditionnel Une instruction logique du programme qui d termine quelle alternative du programme ex cuter ensuite Encha nement logique La conception du programme dans ses grandes lignes D termine la s quence logique des op rations de sorte que cela aboutisse un r sultat contr l Boucle Partie de code qui s ex cute z ro fois ou plus Saisie de l utilisateur Donn e fournie par une source externe NdT p riph rique de saisie pendant que le programme tourne qu
44. fichier texte Maintenant nous voulons seulement voir les lignes qui ne contiennent pas la cha ne cible sandy gt sed erors d exemple This is the first line of an example text This is a line not containing any errors This is the last line sandy gt La commande d a pour effet d exclure des lignes de l affichage Les lignes dont le d but correspond un patron donn et la fin un autre sont affich es comme a sandy gt sed n This errors p exemple This is a line not containing any errors sandy gt 2 3 Intervalle de lignes Cette fois nous voulons supprimer les lignes contenant les erreurs Dans l exemple ce sont les lignes 2 4 Sp cifier cet intervalle avec la commande d sandy gt sed 2 4d exemple This is the first line of an example text This is a line not containing any errors This is the last line sandy gt Pour afficher le fichier partir d une certaine ligne jusqu la fin employez une commande de la sorte sandy gt sed 3 d exemple This is the first line of an example text It is a text with erors sandy gt Ceci affiche seulement les 2 premi res lignes du fichier exemple Les commandes suivantes affichent la premi re ligne contenant le patron a text jusqu et inclus la prochaine ligne contenant a line sandy gt sed n a text This p exemple It is a text with erors Lots of erors So much erors all these erors are mak
45. gt franky gt 2 3 Exporter les variables Une variable cr e comme celles ci dessus est seulement visible par le Shell actif C est une variable locale les processus enfants de ce Shell actif ne connaitront pas cette variable Afin de faire connaitre ces variables 4 un sous Shell nous avons besoin de faire un export avec l int gr e export Les variables export es sont appel es les variables d environnement D finir et exporter sont souvent 2 actions faites en m me temps export VARNAME valeur Un sous Shell peut changer la valeur de variables h rit es de son parent mais cette modification n affecte pas le parent Cet exemple en fait la d monstration franky gt full_name Franky M Singh franky gt bash franky gt echo full_name franky gt exit franky gt export full_name franky gt bash franky gt echo full_name Franky M Singh franky gt export full_name Charles the Great franky gt echo full_name Charles the Great franky gt exit franky gt echo full_name Franky M Singh franky gt Quand d abord on essaye de lire la valeur de full_name dans un sous Shell on n a rien echo affiche une cha ne nulle Le sous Shell finit et full_name est export par le parent une variable peut tre export e apr s qu elle ait t assign e Puis un nouveau sous Shell est lanc dans lequel la variable export e par le parent est visible Le contenu de la variable est chang
46. informations au sujet de ces expressions pr d finies cathy gt grep yf etc group sys x 3 root bin adm tty x 5 mail x 12 mail postfix ftp x 50 nobody x 99 floppy x 19 xfs x 43 nfsnobody x 65534 postfix x 89 Dans cet exemple toutes les lignes contenant soit y ou f sont affich es 2 2 3 Jokers Employez le pour cibler la correspondance avec un seul caract re Si vous voulez obtenir une liste de tous les mots d un dictionnaire anglais de 5 caract res et commen ant par c et finissant par h pratique pour les mots crois s cathy gt grep lt c h gt usr share dict words catch clash cloth coach couch cough crash crush Si vous voulez afficher les lignes contenant le caract re litt ral point employez l option F de grep Pour cibler plusieurs caract res employez l ast risque Cet exemple cible tous les mots commen ant par c et finissant par h dans le dictionnaire du syst me cathy gt grep lt c h gt usr share dict words caliph cash catch cheesecloth cheetah output omitted Si vous voulez cibler le caract re ast risque litt ral dans un fichier ou un r sultat employez les apostrophes Cathy dans l exemple ci dessous essaye d abord de trouver le caract re ast risque dans etc profile sans les apostrophes ce qui ne ram ne aucune ligne Avec les apostrophes un r sultat est g n r cathy gt grep etc pr
47. kelly octarine gt cat revenues 20021009 20021013 consultancy BigComp 2500 20021015 20021020 training EduComp 2000 20021112 20021123 appdev SmartComp 10000 20021204 20021215 training EduComp 5000 kelly octarine gt cat total awk total total 5 print Send bill for 5 dollar to 4 END print nTotal revenue total kelly octarine gt awk f total awk test Send bill for 2500 dollar to BigComp Send bill for 2000 dollar to EduComp Send bill for 10000 dollar to SmartComp Send bill for 5000 dollar to EduComp Total revenue 19500 kelly octarine gt Les raccourcis de type C comme VAR value sont aussi accept s 3 5 Plus d exemples L exemple de la Section 3 2 Ecrire des fichiers de r sultat devient bien plus facile quand on utilise un script awk kelly octarine html gt cat make html from text awk T prame lt html gt n lt head gt lt title gt Awk generated HTML lt title gt lt head gt n lt body bgcolor ffffff gt n lt pre print END print lt pre gt n lt body gt n lt html gt Et les commandes ex cuter sont aussi bien plus directe quand on utilise awk plut t que sed kelly octarine html gt awk f make html from text awk testfile gt file html Exemples d Awk sur votre syst me Nous nous r f rons encore au r pertoire qui contient les scripts d initialisation de votre syst me Entrez une commande similaire la sui
48. last line sandy gt Ins rer une cha ne la fin de chaque ligne sandy gt sed s EOL exemple This is the first line of an example text EOL It is a text with erors EOL Lots of erors EOL So much erors all these erors are making me sick EOL This is a line not containing any errors EOL This is the last line EOL sandy gt Commandes de recherche et remplacement multiples sont s par es avec l option e sandy gt sed e s erors errors g e s last final g exemple This is the first line of an example text It is a text with errors Lots of errors So much errors all these errors are making me sick This is a line not containing any errors This is the final line sandy gt Garder 4 l esprit que sed par d faut affiche les r sultats sur la sortie standard le plus souvent sur la fen tre de votre terminal Si vous voulez sauvegarder le r sultat dans un fichier le rediriger sed option some expression file to process gt sed output in a file Plus d exemples Plein d exemples sed se trouvent dans les scripts de d marrage de votre machine lesquels sont d ordinaire dans etc init d ou etc rc d init d Placez vous dans le r pertoire contenant les scripts d initialisation de votre syst me et lancer la commande suivante grep sed 3 L usage en mode diff r de sed 3 1 Lire des commandes sed depuis un fichier De multiples commandes sed peuvent tre m moris es dans un fich
49. le Shell utilise l expansion du nom Exemple franky gt export PATH PATH testdir testdir sera interpr t en HOME testdir donc si HOME est var home franky le r pertoire var home franky testdir sera ajout au contenu de la variable PATH 4 4 Param tre Shell et expansion de variable Le caract re introduit l expansion de param tre la substitution de commande ou l expansion arithm tique Le nom du param tre ou symbole interpr ter peut tre ench ss entre accolades Elles sont optionnelles mais utiles la s paration des caract res du symbole interpr ter de ceux suivant imm diatement Quand l accolade est utilis e le premier non prot g par un slash invers ou ni l int rieur d une cha ne entre guillemet ni l int rieur d une expansion arithm tique incorpor e ou d une substitution de commande ou d expansion de param tre est le signal fermant correspondant La forme basique de l expansion de param tre est PARAMETRE La valeur de PARAMETRE y est substitu e Les accolades sont requises quand PARAMETRE est un param tre positionnel avec un symbole de plus de 1 caract re ou quand PARAMETRE est suivi par un caract re qui ne doit pas tre interpr t comme faisant parti du symbole Si le premier caract re de PARAMETRE est un point d exclamation Bash consid re les caract res suivants de PARAMETRE comme tant le symbole de
50. ne seront ni captur es ni adress es nulle part par cons quent vous ne pourrez d bugger Quand vous redirigez les erreurs faites attention l ordre de pr s ance Par exemple cette commande lanc e dans var spool ls l 2 gt var tmp unaccessible in spool va rediriger la sortie standard de la commande Is vers le fichier unaccessible in spool dans var tmp La commande ls l gt var tmp spoollist 2 gt amp 1 redirigera et le standard d entr e et le standard d erreur vers le fichier spoollist La commande ls l 2 gt amp 1 gt var tmp spoollist dirige seulement le standard de sortie vers le fichier de destination parce que le standard d erreurs est copi vers le standard de sortie avant que le standard de sortie soit redirig Par commodit les erreurs sont souvent redirig es vers dev null si il est s r qu elles n ont pas d int r t Des centaines d exemples peuvent tre trouv s dans les scripts de lancement de votre syst me Bash autorise la fois le standard de sortie et le standard d erreurs tre redirig s vers le fichier dont le nom est le r sultat de l expansion de FILE avec cette forme amp gt FILE C est l quivalent de gt FILE 2 gt amp 1 la forme employ e dans les exemples pr c dents C est aussi combin souvent avec la redirection vers dev null par exemple quand vous voulez juste qu une commande s ex cute quelque soit le r sultat ou le statut qu elle donne 2 4 F
51. nom de fichier et de r pertoire Voir les pages man pour plus de d tails Mettez profit le syst me L exemple pr c dent existe pour le besoin de la d monstration Des contr les r guliers peuvent tre facilement faits avec l outil syst me cron Ne pas oublier de rediriger les sorties et les erreurs quand un script est utilis par crontab 2 2 3 Contr le d une boucle while avec des saisies au clavier Ce script peut tre interrompu par l usager quand une s quence Ctrl C est frapp e bin bash Ce script vous apporte sagesse FORTUNE usr games fortune while true do echo Sur quel sujet voulez vous un conseil cat lt lt topics politique startrek noyau sports excusesbidon magie amour litt rature drogues ducation topics echo echo n Faites votre choix read topic echo echo Conseil gratuit sur le sujet topic echo FORTUNE topic echo done Un document int gr est utilis pour pr senter l usager les choix possibles Et de nouveau le test true r p te les commandes de la liste CONSEQUENT COMMANDS encore et encore 2 2 4 Calcul d une moyenne Ce script calcule la moyenne partir de la saisie utilisateur qui est test e avant d tre trait e Si la saisie n est pas dans un intervalle un message est affich Si q est frapp e la boucle est abandonn e bin bash Calcul de la moyenne d une s rie de nombres SCORE 0 AVERAGE 0 SUM 0 NU
52. of Front Cover Text and one of Back Cover Text may be added by or through arrangements made by any one entity If the Document already includes a cover text for the same cover previously added by you or by arrangement made by the same entity you are acting on behalf of you may not add another but you may replace the old one on explicit permission from the previous publisher that added the old one The author s and publisher s of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version 6 Combining documents You may combine the Document with other documents released under this License under the terms defined in section 4 above for modified versions provided that you include in the combination all of the Invariant Sections of all of the original documents unmodified and list them all as Invariant Sections of your combined work in its license notice The combined work need only contain one copy of this License and multiple identical Invariant Sections may be replaced with a single copy If there are multiple Invariant Sections with the same name but different contents make the title of each such section unique by adding at the end of it in parentheses the name of the original author or publisher of that section if known or else a unique number Make the same adjustment to the section titles in the list of Invariant Sections in the license notic
53. par d autres Si ils veulent voir comment vous avez fait les commentaires sont utiles pour clairer le lecteur Les commentaires vous rendent aussi la vie plus facile Par exemple vous avez lu beaucoup de pages man pour obtenir de certaines commandes de votre script un r sultat donn Vous ne vous souviendrez plus de ce qu il fait apr s quelques semaines moins d avoir comment ce que vous avez fait comment et pourquoi Prenez en exemple script1 sh et copiez le sur commented script1 sh que vous ditez de sorte que les commentaires r fl tent ce que le script fait Tout ce qui appara t apr s le sur une ligne est ignor par le Shell et n appara t qu l dition bin bash Ce script efface le terminal affiche un message d accueil et donne des informations sur les utilisateurs connect s Les 2 exemples de variables sont d finis et affich s clear efface le terminal echo Le script d marre echo Salut USER le signe dollar est employ pour obtenir le contenu d une variable echo echo Je vais maintenant vous afficher une liste des utilisateurs connect s echo w montre qui est connect echo et ce qu ils font echo Je d finis 2 variables maintenant COLOUR noir d finit une variable locale Shell VALUE 9 d finit une variable locale Shell echo Ceci est une cha ne COLOUR affiche le contenu de la variable echo Et ceci est un nombre VALUE affiche le contenu de la variabl
54. peut tre aussi toute commande qui retourne un statut z ro quand elle s est bien ex cut e et d autres valeurs en cas d chec Une expression unaire est souvent utilis e pour examiner le statut d un fichier Si l argument FILE d une de ces primitives est de la forme dev fd N alors le descripteur de fichier N est contr l stdin stdout et stderr et leur descripteur de fichier respectif peuvent aussi tre employ s dans les tests 1 1 1 Expressions employ es avec if Le tableau ci dessous contient un aper u de ce qu on appelle primitives et qui servent aux commandes TEST COMMAND ou liste de commandes Ces primitives sont mises entre crochets pour indiquer le test d une expression conditionnelle Tableau 7 1 Expressions primitives Primitives sens a FICHIER Vrai si FICHIER existe b FICHIER Vrai si FICHIER existe et est un fichier de type bloc c FICHIER Vrai si FICHIER existe et est un fichier de type caract re d FICHIER Vrai si FICHIER existe et est de type r pertoire e FICHIER Vrai si FICHIER existe f FICHIER Vrai si FICHIER existe et est un fichier r gulier g FICHIER Vrai si FICHIER existe et son bit SGID est positionn h FICHIER Vrai si FICHIER existe et est un lien symbolique Primitives k FICHIER p FICHIER r FICHIER s FICHIER t FD u FICHIER w FICHIER x FICHIER 0 FICHIER G FICHIER
55. print Files found n lt a x conf print 9 Files found amd conf antivir conf xcdroast conf Xxinetd conf kelly is in etc gt L instruction END peut tre ajout e pour ins rer du texte apr s que le flot en entr e ait t enti rement trait kelly is in etc gt ls l awk lt a x conf print 9 END print Can I do anything else for you mistress amd conf antivir conf xcdroast conf xinetd conf Can I do anything else for you mistress kelly is in etc gt 2 5 Les scripts Gawk Au fur et 4 mesure que les commandes deviennent complexes vous voudrez les m moriser dans un script pour tre r employ es Un script awk contient des instructions awk d finissant des patrons et des actions Pour illustrer nous allons produire un rapport qui affiche nos partitions les plus pleines Voir Section 2 2 Formater les champs kelly is in gt cat diskrep awk BEGIN print WARNING WARNING WARNING lt 8 9 0 9 print Partition 6 t 5 full END print Donnez de l argent pour un nouveau disque VITE kelly is in gt df h awk f diskrep awk WARNING WARNING WARNING Partition usr 97 full Donnez de l argent pour un nouveau disque VITE kelly is in gt awk d abord affiche le message de d but puis formate toutes les lignes qui contiennent un 8 ou un 9 au d but de chaque mot suivi par
56. remplac e bob in echo TEST test test bob in echo TEST bob in export TEST a string bob in echo TEST test a_ string bob in echo TEST2 TEST a_ string Cette forme est souvent employ e dans les tests conditionnels par exemple dans celui ci z COLUMNS amp amp COLUMNS 80 C est une notation plus courte pour if z COLUMNS then COLUMNS 80 fi Voir la Section 1 2 3 Comparaisons de cha nes pour plus de d tails au sujet de ce type de test de condition Si le tiret est remplac par le signe gal la valeur est affect e au param tre si il n existe pas bob in echo TEST2 bob in echo TEST2 TEST a_ string bob in echo TEST2 a_ string La syntaxe suivante teste l existence d une variable Si elle n est pas d clar e l expansion de WORD est affich e sur le standard de r sultat et un Shell non interactif se termine Une d monstration bob in cat vartest sh bin bash Ce script teste si une variable est d clar e Si non Il quitte en affichant un message echo TESTVAR Il y a tellement encore que je voudrais faire echo TESTVAR est d clar e nous pouvons traiter bob in testdir vartest sh vartest sh line 6 TESTVAR IL y a tellement encore que je voudrais faire bob in testdir export TESTVAR present bob in testdir vartest sh present TESTVAR est d clar e nous pouvons traiter
57. son Shell est 10662 Apr s avoir mis un travail en tache de fond la variable renvoie l ID du processus du travail en t che de fond Le Shell actif est bash Quand une erreur se produit renvoie un statut d ex cution diff rent de o z ro 2 6 Script finalit s multiples gr ce aux variables En plus de rendre le script plus lisible les variables vous permettent d utiliser un m me script dans divers environnements ou pour des finalit s multiples Prenez l exemple suivant un script tr s simple qui effectue une sauvegarde du r pertoire racine de franky vers un serveur distant bin bash Ce script fait une sauvegarde de mon r pertoire personnel cd home Ceci cr e le fichier archive tar cf var tmp home franky tar franky gt dev null 2 gt amp 1 Avant supprimer l ancien fichier bzip2 Redirige les erreurs parce que ceci en g n re quand l archiv n existe pas Puis cr e un nouveau fichier compress rm var tmp home franky tar bz2 2 gt dev null bzip2 var tmp home franky tar Copie le fichier vers un autre h te nous avons une cl ssh pour effectuer ce travail sans intervent scp var tmp home franky tar bz2 bordeaux opt backup franky gt dev null 2 gt amp 1 Cr e un marqueur temporel dans un fichier journal date gt home franky log home_backup log echo backup succeeded gt home franky log home_backup log Avant tout vous avez plus tendance faire des erreurs si vous saisissez au clav
58. sp cification d une liste de valeurs Une liste de commandes est ex cut e pour chaque valeur de la liste La syntaxe de cette boucle est for NOM in LIST do COMMANDES done Si in LIST est absent il est remplac par in et for ex cute les COMMANDES une fois pour chaque param tre positionnel d clar voir Section 2 5 Param tres sp ciaux et Section 2 1 2 Contr le des param tres de la ligne de commande Le statut retourn est le statut d ex cution de la derni re commande ex cut e Si aucune commande n est ex cut e parce que LIST ne r sulte en aucun l ment le code retour est z ro NOM peut tre tout nom de variable m me si i est employ tr s souvent LIST peut tre toute liste de mots cha nes ou nombres qui peuvent tre des litt raux ou g n r s par toute commande Les COMMANDES ex cuter peuvent tre aussi toute commande syst me script programme ou instruction Shell Au premier passage dans la boucle nom est valoris la valeur du premier l ment dans LIST Au deuxi me passage sa valeur est donn e par le second l ment dans la liste et ainsi de suite La boucle termine quand NOM a pris une fois la valeur de chaque l ment de LIST et qu il ne reste plus d l ments dans LIST 1 2 Exemples 1 2 1 Utiliser la substitution de commande pour sp cifier les l ments de LIST Le premier exemple est une ligne de commande qui montre l emploi d une boucle for pour effectuer
59. tous les scripts d initialisation Avec cette m thode les t ches communes comme contr ler qu un processus s ex cute d marrer ou arr ter un d mon etc n ont qu tre crites qu une seule fois d une mani re g n rique Si la m me t che est n cessaire de nouveau le code est recycl Vous pourriez faire votre propre fichier etc functions qui contiendrait toutes les fonctions que vous utilisez r guli rement dans diff rents scripts Entrez simplement la ligne etc functions quelque part au d but du script et vous pouvez recycler les fonctions 2 2 D finir le chemin Le code ci dessous peut tre trouv dans le fichier etc profile La fonction pathmunge est d finie puis utilis e pour d finir les chemins de root et des autres utilisateurs pathmunge if echo PATH bin egrep q 1 then if 2 after then i PATH PATH 1 e se PATH 1 PATH fi fi Path manipulation if id u 0 then pathmunge sbin pathmunge usr sbin pathmunge usr local sbin i pathmunge usr X11R6 bin after unset pathmunge La fonction consid re son premier argument comme tant un nom de chemin Si ce nom de chemin n est pas encore dans le chemin courant il y est ajout Le second argument de cette fonction d finit si le chemin sera ajout au d but ou la fin de la d finition actuelle du PATH L utilisateur standard se voit ajouter seulement usr X11R6 bin dans leu
60. un autre chiffre et le signe de pourcentage Un message final est ajout Mise en relief de la syntaxe Awk est un langage de programmation Sa syntaxe est reconnue par la plupart des diteurs qui font la mise en relief de la syntaxe comme pour d autres langages tel que C Bash HTML etc 3 Les variables Gawk Tandis que awk traite le fichier en entr e il utilise plusieurs variables Certaines sont modifiables d autres sont en lecture 3 1 Le s parateur de champs en entr e Le s parateur de champs qui est soit un simple caract re soit une expression r guli re contr le la fa on dont awk d coupe l enregistrement entr en champs L enregistrement en entr e est examin la recherche de s quences de caract res qui correspondent au s parateur d fini les champs eux m mes sont les textes entre chaque s parateur Le s parateur de champs est d fini par la variable int gr e Fs Notez que cette variable et IFS utilis e par les Shell compatible POSIX sont distinctes La valeur de la variable de s parateur de champs peut tre chang e dans le programme awk avec l op rateur d assignement Souvent le bon moment pour faire ce changement c est au d but de l ex cution avant qu aucune entr e n ait t trait e de sorte que le tout premier enregistrement est lu avec le s parateur idoine Pour ce faire employer le patron sp cial BEGIN Dans l exemple ci dessous nous crivons une commande qui affiche t
61. variables restantes dans la nouvelle fen tre d un autre terminal 6 Modifier etc profile pour que tous les utilisateurs soient accueillis la connection tester 7 Pour le compte root modifier l invite pour que s affiche Danger root travaille en mode w de pr f rence une couleur vive telle que rouge ou rose ou le mode vid o invers 8 Assurez vous que les utilisateurs nouvellement cr s ont aussi une invite personnalis e qui les informe sur quel syst me et dans quel r pertoire ils travaillent Testez vos modifications en ajoutant un utilisateur et en se connectant avec ce compte 9 Ecrire un script dans lequel 2 entiers sont assign s 2 variables Le script doit calculer la surface d un rectangle partir de ces valeurs Il devrait tre a r avec des commentaires et g n rer un affichage plaisant N oubliez pas le chmod de vos scripts Chapitre 4 Expressions r guli res Table des mati res 1 Expressions r guli res 1 1 Qu est ce qu une expression r guli re 1 2 Les m tacaract res des expressions r guli res 1 3 Expressions r guli res basiques versus celles tendues 2 Exemples en utilisant grep 2 1 Qu est ce que grep 2 2 Grep et les expressions r guli res 3 La correspondance de patron dans les fonctionnalit s Bash 3 1 Intervalle de caract re 3 2 Classes de caract res 4 R sum 5 Exercices R sum Dans ce chapitre nous abordons e L utilisation des expressions r
62. visible quand vous employez la syntaxe correcte pour la commande print o les param tres sont s par s par des virgules kelly octarine test gt cat test recordl datal record2 data2 kelly octarine test gt awk print 1 2 test recordidatal record2data2 kelly octarine test gt awk print 1 2 test recordl datal record2 data2 kelly octarine test gt Si vous ne mettez pas de virgule print consid rera les l ments de r sultat comme un seul argument c est a dire il omet l emploi du s parateur de r sultat par d faut OFS N importe quel caract re peut tre employ comme s parateur de champs de r sultat en d finissant cette variable int gr e 3 2 2 Le s parateur d enregistrement de r sultat Le r sultat d une instruction print est appel e un enregistrement de r sultat Chaque commande print produit un enregistrement de r sultat et ajoute une cha ne appel e le s parateur d enregistrement de r sultat ORS NdT output record separator La valeur par d faut de cette variable est n le caract re saut de ligne Donc chaque instruction print g n re une ligne distincte Pour modifier la fa on dont les champs et les enregistrements de r sultat sont s par s assignez une autre valeur OFS et ORS kelly octarine test gt awk BEGIN OFS ORS n gt n print 1 2 test recordl datal gt record2 data2 gt kelly octarine test gt Si la
63. 1 Contrairement emp che le d coupage en mots des valeurs de variables Donc si VAR var with spaces vous n avez pas besoin de mettre des guillemets VAR dans un test m me si cela reste une bonne habitude Aussi inhibe l analyse des chemins de sorte que des cha nes litt rales avec des jokers ne seront pas interpr t es comme des noms de fichiers Les et font interpr ter la cha ne la droite comme un patron glob du Shell qui doit correspondre la valeur la gauche par exemple value val J De m me que la liste CONSEQUENT COMMANDS suivant le then la liste ALTERNATE CONSEQUENT COMMANDS suivant le else peut contenir toute commande de style UNIX qui retourne un statut d ex cution Un autre exemple tir de celui de la Section 1 2 1 Tester le statut d ex cution anny gt su Password root elegance root if grep USER etc passwd 1 gt dev null gt then echo votre compte utilisateur ne se trouve pas sur le syst me local gt etse echo votre compte utilisateur ne se trouve pas sur le syst me local gt fi votre compte utilisateur se trouve dans etc passwd file root elegance root Nous permutons vers le compte root pour montrer l effet du else votre root est d ordinaire un compte local tandis que votre compte personnel peut tre g r par un syst me central tel qu un serveur LDAP 2 1 2 Contr le des param tres de la ligne de commande Au lieu
64. 1 mi 01 MACHINES octarine MAILCHECK 60 MAIL var mail franky MANPATH usr man usr share man usr local man usr X11R6 man MEAN MACHINES octarine MOZ DIST BIN usr lib mozilla MOZILLA FIVE HOME usr lib mozilla MOZ PROGRAM usr lib mozilla mozilla bin MTOOLS FAT COMPATIBILITY 1 MYMALLOC 0 NNTPPORT 119 NNTPSERVER news NPX PLUGIN PATH plugin ns4plugin usr lib netscape plugins OLDPWD nethome f ranky OS Linux PAGER less PATH nethome franky bin Linux nethome franky bin usr local bin usr local sbin usr X11R6 bin usr t PS1 033 1 44m franky is in w 033 0m PS2 More input gt PWD nethome franky SESSION MANAGER local octarine hq xalasys com tmp ICE unix 22106 SHELL bin bash SHELL_LOGIN login SHLVL 2 SSH AGENT PID 22161 SSH ASKPASS usr libexec openssh gnome ssh askpass SSH AUTH SOCK tmp ssh XXmhQ4fC agent 22106 START _WM twm TERM xte rm TYPE type USERNAME f ranky USER f ranky _ usr bin printenv VISUAL vi WINDOWID 20971661 XAPPLRESDIR nethome f ranky app defaults XAUTHORITY nethome franky Xauthority XENVIRONMENT nethome franky Xdefaults XFILESEARCHPATH usr X11R6 Lib X11 L T N C S usr X11R6 1ib X11 1 S T SN CSS usr X11R6 1ib X11 T XKEYSYMDB usr X11R6 1ib X11 XKeysymDB XMODIFIERS im none XTERMID XWINHOME usr X11R6 X X11R6 YACC bison y 2 1 2 Variables locales Les variables locales ne sont visibles que dans le Shell courant La commande int gr e set sans
65. 3 Redirection et descripteurs de fichiers 2 4 Fichier d entr e et fichier de sortie 3 R sum 4 Exercices R sum Dans ce chapitre nous expliquerons comment interagir avec les utilisateurs de nos scripts e En affichant des messages et des explications conviviaux l intention des utilisateurs R cup rer la saisie utilisateur Demander une entr e utilisateur Utiliser les descripteurs de fichiers pour lire et crire depuis et sur de multiples fichiers 1 Afficher les messages utilisateurs 1 1 Interactif ou pas Certains scripts s ex cutent sans aucune interaction avec l utilisateur Les avantages des scripts non interactifs comprennent Le script s ex cute d une fa on pr dictible chaque fois Le script peut s ex cuter en t che de fond Beaucoup de scripts cependant demandent des entr es de la part de l utilisateur ou donnent des r sultats l utilisateur alors que le script tourne Les avantages des scripts interactifs sont parmi d autres e Scripts plus flexibles e L utilisateur peut adapter le script pendant qu il est lanc ou plut t faire en sorte qu il agisse de diverses fa ons Le script peut afficher la progression du traitement Quand vous crivez un script interactif ne jamais tre avare de commentaires Un script qui affiche des messages appropri s est bien plus convivial et peut tre plus facilement d bugg Un script peut effectuer un traitement tout fait cor
66. 4 1 2 3 4 5 6 Dans le r sultat de ls 1 il y a 9 colonnes L instruction print utilise ces champs comme ceci kelly octarine test gt ls l awk print 5 9 160orig 121script sed 120temp_file 126test 120twolines 441txt2html sh kelly octarine test gt Cette commande a affich la s me colonne d une longue liste de fichiers contenant la taille du fichier et la derni re colonne contenant le nom du fichier Ce r sultat est peu lisible 4 moins d utiliser le moyen ad hoc qui est de s parer les colonnes que vous voulez voir afficher par une virgule Dans ce cas le caract re s parateur d affichage par d faut souvent un espace sera ins r entre chaque champs de r sultat 2 2 Formater les champs Sans formater avec seulement le s parateur de r sultat l affichage est peu lisible En ins rant quelques tabulations et une cha ne pour indiquer la nature du champs ce sera bien mieux kelly octarine test gt ls ldh grep v total awk print Size is 5 bytes for 9 Size is 160 bytes for orig Size is 121 bytes for script sed Size is 120 bytes for temp file Size is 126 bytes for test Size is 120 bytes for twolines Size is 441 bytes for txt2html sh kelly octarine test gt Notez l effet du slash invers qui permet de continuer une entr e trop longue sur la ligne suivante sans que le Shell interpr te cela comme des commandes distinctes Alors qu une ligne de com
67. CONSEQUENT COMMANDS est ex cut Le statut retourn est le statut d ex cution de la derni re commande ex cut e ou z ro si aucune condition n est vraie 2 2 2 Exemple Ceci est un exemple que vous pouvez mettre dans votre crontab pour une ex cution quotidienne anny etc cron daily gt cat disktest sh bin bash Ce script fait un test tr s simple pour contr ler l espace disque space df h awk print 5 grep grep v Use sort n tail 1 cut d f1 alertvalue 80 if space ge alertvalue then wee Au moins un de mes disques est bient t plein mail s daily diskcheck root else echo Espace disque correct mail s daily diskcheck root fi 2 3 Les instructions if imbriqu es Comprise dans une instruction if on peut inclure une autre instruction if Vous pouvez inclure autant de niveaux de if imbriqu s que vous pouvez appr hender logiquement Voici un exemple testant l ann e bissextile anny testdir gt cat testleap sh bin bash Ce script teste si nous sommes dans une ann e bissextile ou pas year date Y if year 400 eq 0O then echo This is a leap year F vrier a 29 jours elif year 4 eq then if year 100 ne then echo Ann e bissextile F vrier a 29 jours else echo Ann e non bissextile F vrier a 28 jours fi else ba has echo Ann e non bissextile F vrier a 28 jours fi anny testd
68. Guide Bash du d butant Version fran aise du livre Bash Guide for Beginners Machtelt GARRELS Xalasys com lt tille ne veut pas de spam CHEZ xalasys POINT com gt YKERB Adaptation fran aise Marc BLANC Relecture de la version fran aise lt arsace CHEZ wanadoo POINT fr gt Jerome BLONDEL Relecture de la version fran aise lt jeromeblondel CHEZ yahoo POINT fr gt Jean Philippe GU RARD Pr paration de la publication de la v f lt fevrier CHEZ tigreraye POINT org gt Version 1 9 fr 1 1 2007 04 23 Table des mati res Introduction 1 Pourquoi ce guide Qui devrait lire ce guide Nouvelles versions traductions et disponibilit Historique des r visions Contributions Observations et retours vari s information de Copyright De quoi avez vous besoin 9 Conventions employ es dans ce document 10 Organisation de ce document 1 Bash et scripts Bash 1 Les langages de contr le Shell courants 1 1 Les fonctions du Shell en g n ral 1 2 Types de Shell 2 Avantages du Bourne Again SHell 2 1 Bash est le Shell GNU 2 2 Fonctionnalit s offertes seulement par le Bash 3 L ex cution de commandes 3 1 G n ralit 3 2 Les commandes int gr es du Shell CON Au BR LD N 3 3 Ex cuter un programme dans un script 4 Construction de blocs 4 1 Construction de blocs Shell 5 Ecrire de bons scripts 5 1 Caract ristiques d un bon script 5 2 Structure 5 3 Terminologie 5 4 Un mot sur l ordre et la
69. LLATE si elle est d finie Rappelez vous que d autres param trages pourraient interpr ter a cx z comme aBbCcXxYyZz si le tri est fait selon l ordre du dictionnaire Si vous voulez tre s r d avoir l interpr tation classique des intervalles forcer ce param trage en d finissant LC_COLLATE ou LC_ALL C 3 2 Classes de caract res Les jeux de caract res peuvent tre sp cifi s entre crochets avec la syntaxe CLASS o CLASS est une classe d finie dans le standard POSIX et a une des valeurs alnum alpha ascii blank cntrl digit graph lower print punct space upper word or xdigit Quelques exemples cathy gt ls ld digit drwxrwxr x 2 cathy cathy 4096 Apr 20 13 45 2 cathy gt ls ld upper drwxrwXxr 3 cathy cathy 4096 Sep 30 2001 Nautilus drwxrwxr x 4 cathy cathy 4096 Jul 11 2002 Open0ffice org1 0 rw rw r 1 cathy cathy 997376 Apr 18 15 39 Schedule sdc Quand l option Shell extglob est activ e par l int gr e shopt plusieurs autres op rateurs de correspondance sont reconnus Plus dans les pages Bash info section Basic shell features gt Shell Expansions gt Filename Expansion gt Pattern Matching 4 R sum Les expressions r guli res sont puissantes pour extraire des lignes particuli res d un fichier ou d un r sultat Beaucoup de commandes UNIX emploient des expressi
70. Les variables d finies par l utilisateur variables Les variables Gawk Bash advantages Bash est le Shell GNU features Invocation startup files Fichiers de d marrage de Bash brace expansion examples L expansion d accolades built in popd Pile de r pertoires built ins Bash built ins Les commandes int gr es du Shell Bourne Shell built ins Les commandes int gr es du Shell declare Les param tres Shell enable Le Shell restreint export Exporter les variables hash Le Shell restreint pushd Pile de r pertoires source Le Shell restreint Ex cuter le script special built ins Les commandes int gr es du Shell C commands built in commands Les commandes int gr es du Shell env Les variables Globales execution G n ralit fork and exec G n ralit printenv Les variables Globales script execution Ex cuter un programme dans un script search for commands L ex cution de commandes sh utils package Les variables Globales command substitution syntax La substitution de commande comments usage Ajout de commentaires configuration files etc bashrc etc bashrc etc inputrc etc profile etc profile etc profile etc profile d etc profile bash login bash_login bash logout bash logout bash profile bash profile bashrc bashrc profile profile change shell configuration Modification des fichiers de configuration du Shell prompt Modification des fichiers de configuration du Shell D d
71. M 0 while true do echo n Entrez votre score 0 100 q pour quitter read SCORE if SCORE lt O SCORE gt 100 then echo Soyez s rieux Banal essayer encore elif SCORE q then echo Evaluation moyenne AVERAGES break else SUM SUM SCORE NUM NUM 1 Pr ibaa L 5UM NUM i done echo Je quitte Remarquez que les variables sur les derni res lignes ne sont pas prot g es pour pouvoir en faire des calculs 3 La boucle until 3 1 Qu est ce que c est La boucle until est tr s similaire 4 while part qu elle s ex cute jusqu ce que TEST COMMAND s ex cute avec succ s Tant que cette commande choue la boucle se poursuit La syntaxe est la m me que pour la boucle while until TEST COMMAND do CONSEQUENT COMMANDS done Le statut retourn est le statut d ex cution de la derni re commande ex cut e dans la liste CONSEQUENT COMMANDS ou z ro si aucune n est ex cut e TEST COMMAND peut tre toute commande qui peut s achever avec un statut de succ s ou d chec et CONSEQUENT COMMANDS peut tre toute commande UNIX script ou bloc Shell Comme nous l avons d j expliqu auparavant le peut tre remplac par un ou plusieurs sauts de lignes quelque soit l endroit o il appara t 3 2 Exemple Script am lior de picturesort sh voir Section 2 2 2 Des boucles while imbriqu es qui teste l espace disque disponible Si
72. MAND LIST CASEN COMMAND LIST esac Chaque cas est une expression qui cible un patron Les commandes COMMAND LIST de la premi re correspondance trouv e sont ex cut es Le symbole est employ pour s parer de multiples patrons et l op rateur termine la liste des patrons Chaque case et ses commandes associ es est appel une clause Chaque clause doit se terminer par Chaque instruction case est termin e par l instruction esac Dans l exemple nous montrons l emploi de case pour envoyer un message d avertissement plus pr cis avec le script disktest sh anny testdir gt cat disktest sh bin bash Ce script fait un test tr s simple pour v rifier l espace disque space df h awk print 5 grep grep v Use sort n tail 1 cut d f1 case space in 1 6 Message Tout est bon 7 81 Message Commencer a songer a faire de la place Il y a une partition qui est space pleine 9 1 8 Message D p chez vous avec ce nouveau disque Une partition est space pleine 99 Message Je suis en train de me noyer Il y a une partition space Message Il semble que je tourne avec un espace disque inexistant esac echo Message mail s disk report date anny anny testdir gt Vous avez un nouveau mail anny testdir gt tail 16 var spool mail anny From anny octarine Tue Jan 14 22 10 47 2003 Return Path lt anny octarine gt Receiv
73. ONFIRM shift done 8 R sum Dans ce chapitre nous avons vu comment les commandes r p titives peuvent tre incorpor es dans des structures de boucles La plupart des boucles sont construites avec for while ou until ou une combinaison de ces commandes La boucle for ex cute une t che un nombre d fini de fois Si vous ne savez pas combien de fois une commande devrait s ex cuter employez plut t until ou while pour sp cifier quand la boucle devrait s arr ter Les boucles peuvent tre interrompues ou r it r es avec break et continue Un fichier peut tre utilis comme entr e pour une boucle qui a un op rateur de redirection les boucles peuvent aussi lire les r sultats de commandes qui sont fournis la boucle par un tube La structure select est employ e pour afficher des menus dans les scripts interactifs Le d calage des param tres d une ligne de commande peut tre fait avec shift 9 Exercices Rappelez vous quand vous crivez des scripts travaillez par tapes et les tester avant de les incorporer votre script 1 Cr er un script qui fera une copie r cursive des fichiers dans etc de sorte qu un administrateur syst me d butant puisse les diter sans crainte 2 Ecrire un script qui prendra exactement un param tre le nom d un r pertoire Si le nombre de param tres est sup rieur ou inf rieur 1 afficher le message d utilisation Si l argument n est pas un r pertoire afficher un autre m
74. SH est expliqu e dans le man ssh keygen 7 Adaptez le script partir du 1er exemple la Section 3 1 Les conditions simplifi es pour inclure le cas de l occupation de exactement 90 de l espace disque et de moins de 10 de l espace disque Le script devrait se servir de tar cf pour la cr ation de la sauvegarde et gzip ou bzip2 pour la d compression du fichier tar Mettre tous les noms de fichiers dans des variables Mettre le nom du serveur distant et du r pertoire distant dans une variable Ce sera plus facile de r utiliser ce script ou d y faire des modifications dans le futur Le script devrait v rifier l existence d une archive compress e Si elle existe la supprimer d abord pour viter les messages d erreur Le script devrait aussi contr ler l espace disque disponible Avoir l esprit qu un moment donn vous pourrez avoir en m me temps sur le disque les donn es dans votre r pertoire racine celles dans le fichier tar et celle dans l archive compress e Si il n y a pas assez d espace quitter avec un message d erreur dans le fichier journal Le script devrait nettoyer l archive compress e avant de se terminer Chapitre 8 Ecrire des scripts interactifs Table des mati res 1 Afficher les messages utilisateurs 1 1 Interactif ou pas 1 2 Utiliser la commande int gr e echo 2 R cup rer la saisie utilisateur 2 1 L emploi de la commande int gr e read 2 2 Demander une entr e utilisateur 2
75. Texts being LIST A copy of the license is included in the section entitled GNU Free Documentation License If you have no Invariant Sections write with no Invariant Sections instead of saying which ones are invariant If you have no Front Cover Texts write no Front Cover Texts instead of Front Cover Texts being LIST likewise for Back Cover Texts If your document contains nontrivial examples of program code we recommend releasing these examples in parallel under your choice of free software license such as the GNU General Public License to permit their use in free software Glossaire R sum Cette section contient un aper u des principales commandes UNIX par ordre alphab tique Les d tails d utilisation peuvent tre trouv s dans les pages info et man A a2ps Formate des fichiers qui puissent tre imprim s sur une imprimante PostScript acroread Un visionneur de PDF adduser Cr er un nouvel utilisateur ou modifier les informations par d faut de nouveaux utilisateurs alias Cr er un alias Shell d une commande anacron Ex cute des commandes p riodiquement ne suppose pas que l ordinateur fonctionne en continu apropos Cherche des cha nes dans la base de donn e whatis apt get Un outil de gestion de paquets APT aspell Contr leur d orthographe at atq atrm Place en file d attente examine ou supprime des travaux en attente d ex cution aumix Ajuste le mixer audio g awk Recherche de patrons
76. ab gt lt newline gt sa valeur par d faut alors toute suite de caract res IFS sert d limiter les mots Si IFS Si IFS a une valeur autre que celle par d faut alors les suites d espace et Tab sont ignor es au d but et la fin du mot du moment que l espace est inclut dans IFS un caract re espace IFS Tout caract re dans IFS qui n est pas un espace IFS accol un caract re espace IF d limite un champ Une suite de caract re espace IFS est aussi trait e comme un d limiteur Si la valeur de IFS est nulle le d coupage en mots n intervient pas nn Un argument vide or est conserv Un argument ayant une valeur nulle suite l expansion d un param tre est limin Si un param tre non valoris est interpr t l int rieur de 2 guillemets il en r sulte un argument nul qui est conserv Expansion et d coupage en mots Si aucune expansion ne se produit aucun d coupage n est effectu 4 9 Expansion de noms de fichier Apr s le d coupage en mots moins que l option f ait t utilis e voir Section 3 2 D bugger qu une partie du script Bash scanne chaque mot pour les caract res et Si l un de ces caract res appara t alors le mot est consid r comme tant un PATRON et est remplac par la liste des noms de fichiers correspondants au patron tri e par ordre alphab tique Si aucun nom de fichier ne correspond et que l o
77. am tre positionnel 1 echo 2 est le deuxi me param tre positionnel 2 echo 3 est le troisi me param tre positionnel 3 echo echo Le nombre total de param tres positionnels est A l ex cution on peut donner autant de param tres que l on veut franky gt positional sh un deux trois quatre cinq un est le premier param tre positionnel 1 deux est le deuxi me param tre positionnel 2 trois est le troisi me param tre positionnel 3 Le nombre total de param tres positionnels est 5 franky gt positional sh un deux un est le premier param tre positionnel 1 deux est le deuxi me param tre positionnel 2 est le troisi me param tre positionnel 3 Le nombre total de param tres positionnels est 2 Plus de pr cisions sur l valuation de ces param tres au Chapitre 7 Les instructions de condition et la Section 7 L int gr e shift Quelques exemples sur les autres param tres sp ciaux franky gt grep dictionary usr share dict words dictionary franky gt echo _ usr share dict words franky gt echo 10662 franky gt mozilla amp 1 11064 franky gt echo 11064 franky gt echo 0 bash franky gt echo 0 franky gt ls doesnotexist ls doesnotexist No such file or directory franky gt echo 1 franky gt L utilisateur franky lance la commande grep qui a pour effet la valorisation de la variable _ L ID du processus de
78. ans commentaires TEMP var tmp hosts tmp cat etc hosts grep v gt TEMP exec 7 lt amp 0 exec lt TEMP read ipl namel aliasl read ip2 name2 alias2 echo La configuration de l h te local gt gt CONFIG echo ipl namel aliasl gt gt CONFIG echo ip2 name2 alias2 gt gt CONFIG exec 0 lt amp 7 7 lt amp echo n Entrez un commentaire ou ENTER sans commentaire read comment echo comment gt gt CONFIG rm TEMP michel testdir gt sysnotes sh Le r sultat sera m moris dans var tmp sysconfig out Sauvegarde des info de root Entrez des commentaires ENTER for no comment pense b te pour mot de passe Sauvegarde des informations syst me Entrez des commentaires ENTER for no comment dans le DNS central michel testdir gt cat var tmp sysconfig out Les infos du compte root root x 0 0 root root bin bash pense b te pour mot de passe vacance Votre configuration sur la machine locale 127 0 0 1 localhost localdomain localhost 192 168 42 1 tintagel kingarthur com tintagel dans le DNS central 2 4 3 Fermer les descripteurs de fichiers vacance Parce que les processus enfants h ritent des descripteurs ouverts c est une bonne pratique que de fermer les descripteurs quand on en a plus besoin Ceci est fait avec la syntaxe suivante exec fd lt amp syntax Dans l exemple ci dessus le descripteur 7 qui a t assign au standard d entr e
79. apr s les fonctions et donc leur r solution est plus lente Alors que les alias sont plus faciles comprendre les fonctions Shell sont pr f r es aux alias pour la plupart des usages 6 Plus d options Bash 6 1 Afficher les options Nous avons d j abord un certain nombre d options Bash utiles la correction des scripts Dans cette section nous aurons une vue plus approfondie des options Bash Utilisez l option o de set pour afficher toutes les options Shell willy gt set o allexport off braceexpand on emacs on errexit off hashall on histexpand on history on ignoreeof off interactive comments on keyword off monitor on noclobber off noexec off noglob off nolog off notify off nounset off onecmd off physical off posix off privileged off verbose off vi off xtrace off Voir les pages Bash info section Shell Built in Commands The Set Built in pour une description de chaque option Beaucoup d options ont un raccourci de un caract re l option xtrace par exemple quivaut sp cifier set x 6 2 Changer les options Les options Shell peuvent tre modifi es soit par rapport celles par d faut l appel du Shell soit au cours des traitements Shell Elles peuvent tre aussi int gr es aux fichiers de configuration des ressources Shell La commande suivante ex cute un script en mode compatible POSIX willy scripts gt bash posix script sh Pour changer l environnement tem
80. araisons num riques Les exemples anny gt num anny gt echo 201 anny gt if More input gt More input gt ci dessous emploient des comparaisons num riques wc Ll work txt num num gt 150 then echo echo vous avez assez travaill pour aujourd hui echo fi vous avez assez travaill pour aujourd hui anny gt Ce script est ex cut par cron chaque dimanche Si le num ro de semaine est pair cela vous rappelle le passage des boueurs bin bash Calculer le num ro de semaine a partir de la commande date WEEKOFFSET date V 2 Tester si il y a un reste Si pas de reste c est une semaine paire donc envoyer un message Sinon ne rien faire if WEEKOFFSET eq 0 then echo Dimanche soir les boueurs passent mail s Les boueurs passent your your domain org fi 1 2 3 Comparaisons de cha nes Un exemple de comparaison de cha nes avec le test de l identifiant utilisateur if whoami root then echo Vous ne d tenez pas la permission de lancer 0 en tant que non administrateur exit 1 fi Avec Bash vous pouvez raccourcir ce type de construction L quivalent compact du test ci dessus est ce qui suit whoami root amp amp echo vous tes connect s avec un compte non administrateur exit 1 Similaire l expression amp amp qui indique quoi faire si le test s av re vrai I sp cifie quoi
81. as trop de donn es Ecrire chaque tape puis tester cette portion de code plut t que d crire tout d un seul coup 1 Ecrire un script qui demande l ge de l usager Si il est gal ou sup rieur 16 afficher un message indiquant que l usager est autoris boire de l alcool Si l usager est en dessous de 16 ans afficher un message disant combien d ann es l usager devra attendre avant d tre autoris l galement boire de l alcool En plus calculer combien de bi re un usager de plus de 18 ans a bu statistiquement 100 litres an et donner cette information l usager 2 Ecrire un script qui prenne un fichier en param tre Servez vous d un document int gr qui pr sente l usager diff rents choix pour compresser ce fichier Les choix possibles peuvent tre gzip bzip2 compress et zip 3 Ecrire un script appel homebackup qui automatise tar afin que la personne qui lance le script ait toujours les options d sir es cvp et sauvegarder le r pertoire de destination var backups afin de faire une sauvegarde du r pertoire racine de l usager Ajouter les fonctionnalit s suivantes Tester le nombre de param tres Le script ne devrait pas en avoir Si des param tres sont pr sents sortir apr s avoir affich le message d utilisation du script D terminer si le r pertoire backups a assez d espace libre pour contenir la sauvegarde Demander l usager si il veut une sauvegarde compl te ou incr mentale S
82. ash history D termine le nombre maximum de lignes que m morise le fichier d historique par d faut 500 Nom de variable HISTIGNORE HISTSIZE HOSTFILE HOSTNAME HOSTTYPE IGNOREEOF INPUTRC LANG LC ALL LC COLLATE LC CTYPE LC MESSAGES LC_NUMERIC LINENO LINES MACHTYPE MAILCHECK OLDPWD D finition Une liste de patrons s par s par deux points qui sert d terminer quelles commandes sont m moris es dans l historique D termine le nombre maximum de commandes que m morise le fichier d historique par d faut 500 Contient le nom d un fichier au format de etc hosts qui devrait tre lu quand le Shell a besoin du nom de machine h te D livre le nom de la machine h te Une cha ne qui d crit la machine sur laquelle Bash est en train de tourner D termine l action du Shell quand il re oit le caract re EOF et uniquement celui l D livre le nom du fichier d initialisation de Readline se substituant etc inputrc Utilis pour tenter de d terminer le particularisme local lorsque qu aucune variable commen ant par LC_ ne sp cifie la cat gorie Cette variable se substitue LANG et toute autre variable LC_ en sp cifiant une cat gorie de particularisme local Cette variable d termine l ordre des lettres lors du tri du r sultat de l expansion des noms ainsi que le comportement des expressions des intervalles des classes d quivalences et de la co
83. bleau Nous traiterons ces types au Chapitre 10 Un peu plus sur les variables Dans l imm diat nous allons travailler avec des valeurs de variables de type chaine et entier 2 2 Cr er des variables Les variables sont sensibles 4 la casse et en majuscule par d faut Donner des noms en minuscule aux variables locales est une convention parfois employ e Cependant vous tes libre de nommer comme vous voulez ou de m langer la casse Le nom peut aussi comprendre des chiffres mais un nom commen ant par un chiffre n est pas admis prompt gt export lnumber 1 bash export 1number 1 not a valid identifier Pour affecter une valeur dans un Shell la commande est VARNAME value Laisser des espaces autour du signe gal causera une erreur Il est conseill d entourer la valeur avec des guillemets lors de l assignation a r duit les risques d erreurs Divers exemples avec minuscules et majuscules chiffres et espaces franky gt MYVAR1 2 franky gt echo MYVAR1 2 franky gt first_name Franky franky gt echo first_name Franky franky gt full_name Franky M Singh franky gt echo full_name Franky M Singh franky gt MYVAR 2 2 bash MYVAR 2 2 command not found franky gt MYVAR1 2 bash MYVAR1 command not found franky gt MYVAR1 2 bash 2 command not found franky gt unset MYVAR1 first_name full_name franky gt echo MYVAR1 first_name full_name lt no output
84. bre 9 Je vous rends la main maintenant willy scripts gt echo COLOUR willy scripts gt echo VALUE willy scripts gt C est la fa on la plus courante d ex cuter un script C est pr f rable d ex cuter le script comme a dans un sous Shell Les variables fonctions et alias cr s dans le sous Shell sont seulement connus dans la session Bash de ce sous Shell Quand le sous Shell finit et que le parent reprend le contr le tout est r initialis et les changements faits dans l environnement du Shell par le script sont oubli s Si vous ne mettez pas le r pertoire de scripts dans votre PATH et si le r pertoire courant n est pas dans le PATH non plus vous pouvez lancer le script comme a script name sh Un script peut aussi tre explicitement ex cut par un Shell particulier mais g n ralement on ne fait a que pour obtenir un comportement sp cial comme v rifier que le script tourne avec un autre Shell ou afficher une trace pour debugger rbash script name sh sh script name sh bash x script name sh Le Shell sp cifi d marrera en tant que sous Shell de votre Shell actif et ex cutera le script On le fait quand on veut que le script d marre avec des options ou des conditions sp cifiques qui ne sont pas indiqu es dans le script Si vous ne voulez pas d marrer un nouveau Shell mais ex cuter le script dans le Shell courant vous faites source source script name sh source L int gr
85. cette contribution Dan Richter a fourni l exemple suivant Voici le probl me auquel il tait confront Dans mon entreprise nous avons des d monstrations sur notre site WEB et chaque semaine quelqu un est charg de les tester toutes Donc j ai un travail cron qui remplit un tableau avec les candidats possibles qui utilise date 1 pour d terminer la semaine dans l ann e et fait une op ration modulo pour trouver le bon index La personne g t e re oit un courriel Et voici la solution bin bash Ceci est le script get tester address sh D abord nous testons si Bash admet les tableaux Les tableaux ont t ajout s r cemment hotest 0 test echo Echec les tableaux ne sont pas admis dans cette version de Bash amp amp exit Lf Our list of candidates Vous tes libre d ajouter ou d enlever des candidats wholist Bob Smith lt bob example com gt Jane L Williams lt jane example com gt Eric S Raymond lt esr example com gt Larry Wall lt wall example com gt i Linus Torvalds lt linus example com gt Compte le nombre de testeurs candidats Boucle jusqu a trouver une chaine vide count 0 while x wholist count x do count count 1 done Maintenant nous calculons a qui c est le tour week date W La semaine dans l ann e 0 53 week week 0 Elimine de possible z ro au d but let
86. cluent le calcul de la longueur de la variable l arithm tique de variables la substitution du contenu ou d une partie d une variable 5 Exercices Voici quelques casse t tes 1 Ecrire un script qui fait ce qui suit Affiche le nom du script qui s ex cute Afficher le premier le troisi me et le dixi me param tre donn au script Afficher le nombre total de param tres du script Si il y a plus de 3 param tres positionnels employez shift pour d caler toutes les valeurs de 3 places vers la gauche Afficher toutes les valeurs des param tres restants Affiche le nombre de param tres Tester avec z ro un trois et plus de dix param tres 2 Ecrire un script qui installe un navigateur WEB simple en mode texte avec wget et links dump pour afficher les pages HTML l intention de l usager L usager a 3 choix entrer une URL entrer b pour boucler q pour quitter Les 10 derni res URL entr es par l usager sont stock es dans un tableau duquel l usager peut r cup rer une URL avec la fonctionnalit boucler Chapitre 11 Fonctions Table des mati res 1 Introduction 1 1 Qu est ce qu une fonction 1 2 La syntaxe des fonctions 1 3 Les param tres positionnels dans les fonctions 1 4 Afficher une fonction 2 Exemples de fonctions dans des scripts 2 1 Recyclage 2 2 D finir le chemin 2 3 Sauvegarde distance 3 R sum 4 Exercices R sum Dans ce chapitre nous aborderons e Qu est ce qu une fo
87. copies in covers that carry clearly and legibly all these Cover Texts Front Cover Texts on the front cover and Back Cover Texts on the back cover Both covers must also clearly and legibly identify you as the publisher of these copies The front cover must present the full title with all words of the title equally prominent and visible You may add other material on the covers in addition Copying with changes limited to the covers as long as they preserve the title of the Document and satisfy these conditions can be treated as verbatim copying in other respects If the required texts for either cover are too voluminous to fit legibly you should put the first ones listed as many as fit reasonably on the actual cover and continue the rest onto adjacent pages If you publish or distribute Opaque copies of the Document numbering more than 100 you must either include a machine readable Transparent copy along with each Opaque copy or state in or with each Opaque copy a publicly accessible computer network location containing a complete Transparent copy of the Document free of added material which the general network using public has access to download anonymously at no charge using public standard network protocols If you use the latter option you must take reasonably prudent steps when you begin distribution of Opaque copies in quantity to ensure that this Transparent copy will remain thus accessible at the stated location until at least one
88. d elles s arr tent on retrouve ceux du programme appelant Les fonctions sont comme des mini scripts et comme un script elles g n rent un code retour Bien que ce chapitre soit court il contient des connaissances importantes n cessaires pour atteindre le stade supr me de la paresse ce qui est le but recherch de tout administrateur syst me 4 Exercices Voici quelques t ches utiles que vous pouvez r alisez avec des fonctions 1 Ajoutez une fonction votre fichier de configuration bashrc qui automatise l impression des pages man L effet devrait tre que quand vous taper printman lt commande gt les pages man de la commande sortent de l imprimante Contr ler le fonctionnement avec une pseudo imprimante En plus imaginez la possibilit pour l usager de demander un num ro de section des pages man 2 Cr er un sous r pertoire dans votre r pertoire racine dans lequel vous pouvez stocker des d finitions de fonctions Y mettre quelques fonctions Des fonctions utiles peuvent tre parmi d autres celles qui permettent les m mes commandes que DOS ou un UNIX commercial ou vice versa Ces fonctions devraient tre import es dans votre environnment Shell quand bashrc est lu Chapitre 12 Trapper les signaux Table des mati res 1 Signaux 1 1 Introduction 1 2 Utilisation de signaux avec kill 2 Pi ger les signaux 2 1 G n ralit 2 2 Comment Bash interpr te trap 2 3 Plus d exemples 3 R sum 4 Ex
89. d un service sont list es dans le script de lancement C est l une des t ches de l administrateur syst me de configurer init de fa on que les services soient lanc s et stopp s au bon moment Quand vous tes confront s cette t che vous avez besoin d une bonne compr hension des proc dures de d marrage et d arr t du syst me Nous vous conseillons donc de lire les pages man pour init et inittab avant de vous lancer dans les scripts d initialisation Voici un exemple tr s simple qui joue un son au d marrage et l arr t de la machine bin bash This script is for etc rc d init d Link in rc3 d S99audio greeting and rcQ d KOlaudio greeting case 1 in start cat usr share audio at your service au gt dev audio stop cat usr share audio oh no not again au gt dev audio LA esac exit 0 L instruction case souvent utilis e dans ce genre de script est d crite la Section 2 5 Emploi de l instruction exit et du if 6 R sum Bash est le Shell GNU compatible avec Bourne shell il incorpore beaucoup de fonctionnalit s pratiques issues d autres Shells Quand le Shell est lanc il lit ses fichiers de configuration Les plus importants sont etc profile e bash profile e bashrc Bash agit diff remment en mode interactif il a un mode la norme POSIX et un autre restreint Les commandes Shell peuvent tre class es en 3 groupes les fonctions Shell les int gr es Shell
90. de STRING est z ro Vrai si la longueur de STRING n est pas z ro Vrai si les cha nes sont identiques peut tre employ au lieu de pour une stricte compatibilit POSIX Vrai si les cha nes ne sont pas gales Vrai si STRING1 pr c de STRING2 selon le lexique du param trage local Vrai si STRING suit STRING2 selon le lexique du param trage local OP est eq ne 1t le gt ou l option ge Ces op rateurs arithm tiques binaires renvoient vrai si ARGI est gal non gal inf rieur sup rieur ou gal sup rieur ou sup rieur ou gal ARG2 respectivement ARG1 et ARG2 sont des entiers Les expressions peuvent tre combin es avec les op rateurs suivants dans l ordre de leur pr s ance Tableau 7 2 Combinaison d expressions Op ration Effet EXPR Vrai si EXPR est faux EXPR Renvoie la valeur de EXPR Ceci peut tre utilis pour modifier la pr s ance normale des op rateurs EXPR1 a EXPR2 Vrai si EXPR1 et EXPR2 sont vrai EXPR1 o EXPR2 Vrai si soit EXPR1 ou EXPR2 est vrai L int gr e ou test value les expressions conditionnelles en utilisant un jeux de r gles bas sur le nombre d arguments Plus d information sur ce sujet se trouve dans la documentation Bash Tout comme le if est termin par fi le crochet ouvrant devrait tre ferm apr s que les conditions aient t list e
91. de fichier 5 Alias 5 1 Que sont les alias 5 2 Cr er et supprimer des alias 6 Plus d options Bash 6 1 Afficher les options 6 2 Changer les options 8 Exercices 4 Expressions r guli res 1 Expressions r guli res 1 1 Qu est ce qu une expression r guli re 1 2 Les m tacaract res des expressions r guli res 1 3 Expressions r guli res basiques versus celles tendues 2 Exemples en utilisant grep 2 1 Qu est ce que grep 2 2 Grep et les expressions r guli res 3 La correspondance de patron dans les fonctionnalit s Bash 3 1 Intervalle de caract re 3 2 Classes de caract res 4 R sum 5 Exercices 5 L diteur de flot GNU sed 1 Introduction 1 1 Qu est ce que sed 1 2 commandes sed 2 Op rations d dition de modification 2 2 Exclure les lignes contenant le patron 2 3 Intervalle de lignes 2 4 Trouver et remplacer avec sed 3 L usage en mode diff r de sed 3 1 Lire des commandes sed depuis un fichier 3 2 Ecrire des fichiers de r sultat 4 R sum 5 Exercices 6 Le langage de programmation GNU awk 1 Commencer avec gawk 1 1 Qu est ce que gawk 1 2 Commandes Gawk 2 Le programme d affichage 2 1 Afficher les champs s lectionn s 2 2 Formater les champs 2 3 La commande print et les expressions r guli res 2 4 Patrons particuliers 2 5 Les scripts Gawk 3 Les variables Gawk 3 1 Le s parateur de champs en entr e 3 2 Les s parateurs de r sultat 3 3 Le nombre d enregistr
92. dex Symboles etc bashre example etc bashrc etc profile example etc profile bash login example bash login bash logout example bash logout bash profile example bash_ profile bashrc example bashrc A alias Que sont les alias aliases aliases in functions Cr er et supprimer des alias creation Cr er et supprimer des alias definition Que sont les alias delete an alias Que sont les alias examples etc bashrc bashrc Que sont les alias expand_aliases Que sont les alias misspelled commands etc bashrc usage Que sont les alias ANSI C quoting Codage ANSI C arguments definition L ex cution de commandes example existence Test de l existence d un fichier examples Contr le des param tres de la ligne de commande example test number Tester le nombre de param tres exit status Emploi de l instruction exit et du if function example Les param tres positionnels dans les fonctions functions Les param tres positionnels dans les fonctions null arguments Le d coupage de mots number of arguments Contr le des param tres de la ligne de commande positional parameters Param tres sp ciaux Contr le des param tres de la ligne de commande test example Exemples de tableaux testing Contr le des param tres de la ligne de commande to a command Les commandes Shell arithmetic evaluation declare built in Utiliser l int gr e declare arithmetic expansion operators L expansion ar
93. ds en kilos et votre taille en centim tres if 2 then echo Usage 0 poids_en_kilos taille_en_centim tres exit fi weight 1 height 2 idealweight height 110 if weight le idealweight then en Vous devriez manger un peu plus gras else echo Vous devriez manger un peu plus de fruits fi anny gt weight sh 70 150 Vous devriez manger un peu plus de fruits anny gt weight sh 70 150 33 Usage weight sh poids en kilos taille en centim tres Le premier param tre est r f renc par 1 le second par 2 et ainsi de suite Le nombre total de param tres est stock dans Consulter la Section 2 5 Emploi de l instruction exit et du if pour voir une fa on plus l gante d afficher des messages de mode d emploi 2 1 4 Test de l existence d un fichier Ce test est fait dans beaucoup de scripts parce que il n y a pas d int r t lancer un programme si vous savez qu il ne va pas fonctionner bin bash Ce script donne des informations au sujet d un fichier FILENAME 1 echo Properties for FILENAME if f FILENAME then echo Size is ls lh FILENAME awk print 5 echo Type is file FILENAME cut d f2 echo Inode number is ls i FILENAME cut d f1 echo df h FILENAME grep v Mounted awk print On 1 which is mounted as the 6 partition else 0 Le fichier est non existant i Notez que le fichier
94. du jour et le num ro de la semaine Ligne 11 encore un message informatif ainsi que ligne 3 18 et 22 La ligne 12 formate le r sultat de la commande w la ligne 15 affiche le nom du syst me d exploitation et le type de processeur La ligne 19 donne la dur e de fonctionnement du syst me ainsi que sa charge echo et printf sont des commandes int gr es de Bash La premi re retourne toujours un statut o et affiche simplement ses arguments termin s par un caract re de fin de ligne sur la sortie standard tandis que la deuxi me autorise des options de formatage de la cha ne et renvoie un statut diff rent de o en cas d chec Voici le m me script avec l int gr e printf tom gt cat mysystem sh bin bash clear printf This is information provided by mysystem sh Le programme d marre maintenant printf Bonjour USER n n printf Nous sommes le date semaine date V n n printf Ces utilisateurs sont actuellement connect s n w cut d f 1 grep v USER sort u printf n printf uname s est le syst me uname m le processeur n n printf Le syst me fonctionne depuis n uptime printf n printf C est pas plus compliqu n L criture d un script convivial en ins rant des messages est trait au Chapitre 8 Ecrire des scripts interactifs La localisation standard du Bourne Again Shell Ceci implique que le programme bash est install dans bin Si std
95. e bob in echo ARRAY 2 three bob in ARRAY 3 four bob in echo ARRAY one two three four Se r f rer au contenu d un l ment de tableau sans indiquer le num ro d index est quivalent se r f rer au contenu du premier l ment celui d index z ro 2 3 Supprimer des variables tableau L int gr e unset est employ e pour d truire un tableau ou des variables l ments du tableau bob in unset ARRAY 1 bob in echo ARRAY one three four bob in unset ARRAY bob in echo ARRAY lt no output gt 2 4 Exemples de tableaux Exemples pratiques de la manipulation de tableaux sont difficiles 4 trouver Vous trouverez plein de scripts qui ne font pas autre chose sur votre syst me que de calculer des s ries math matiques avec des tableaux par exemple Et a devrait tre l un des exemples les plus int ressants la plupart des scripts ne font que montrer d une fa on hyper simplifi e et th orique ce que vous pouvez faire avec les tableaux La raison de cette fadeur tient en ce que les tableaux sont des structures plut t complexes Vous verrez que les exemples les plus pratiques pour lesquels les tableaux peuvent tre utilis s sont d j mis en oeuvre sur votre syst me mais plus bas niveau en langage C dans lequel la plupart des commandes UNIX sont crites Un bon exemple est la commande int gr e Bash history Les lecteurs int ress s peuvent voir le r p
96. e Version 1 5 2004 12 06 MG Changements du fait du nouveau domaine corrections mineures Version 1 4 2004 10 18 MG Debuggage ajout de quelques notes au Chap 9 repositionnement de vues cran avec les sections cran Correction de typographie Version 1 3 2004 07 09 MG Ajout d une image de traceur 1X1 pixel http tille xalasys com images blank bash png ajout object texte pour toutes les images r paration d un lien mort dans l index am lioration de la liste des signaux Version 1 2 2004 06 15 MG Ajout index plus de rep re dans les sections crans Version 1 1 2004 05 22 MG Derni re relecture avant la mise sous presse ajout d exemples v rification du sommaire exercices introduction arrang e Version 1 0 2004 04 27 TM Livraison initiale pour LDP d autres exercices d autres rep res moins d erreurs et abus ajout du glossaire Version 1 0 beta 2003 04 20 MG Pre version 5 Contributions Merci tous les amis qui ont aid ou essay et mon mari vos paroles d encouragement ont rendu ce travail possible Merci tous les gens qui ont soumis anomalies exemples et remarques parmi plein plein d autres e Hans Bol l une des groupies e Mike Sim remarques sur le style Dan Richter pour les exemples de tableaux Gerg Ferguson pour les id es sur le titre e Mendel Leo Cooper pour avoir mis disposition de l espace linux be pour m avoir aid garder les pieds sur terre F
97. e configuration servent r gler pr cis ment le comportement du Shell Ces fichiers contiennent des options Shell des d clarations de variables des d finitions de fonctions et diverses autres constructions qui nous permettent d adapter notre environnement Mis part les mots r serv s par Bourne Shell Bash et les param tres sp ciaux les noms de variables peuvent tre donn s assez librement Parce que beaucoup de caract res ont un double voire triple sens selon l environnement Bash utilise une syntaxe appropri e pour inhiber le sens sp cial de un ou plusieurs caract res quand le traitement particulier n est pas d sir Bash emploie diverses m thodes pour l expansion de la ligne de commande afin de d terminer quelle est la commande ex cuter 8 Exercices Pour cet exercice vous aurez besoin de lire les pages man de useradd parce que nous allons utiliser le r pertoire etc skel pour stocker les fichiers de configuration Shell par d faut lesquels sont copi s dans le r pertoire racine de chaque utilisateur ajout D abord nous ferons quelques exercices de port e g n rale sur la d claration et l affichage de variables 1 Cr er 3 variables VAR1 VAR2 et VAR3 les initialiser respectivement aux valeurs thirteen 13 et Happy Birthday 2 Faire afficher les valeurs des ces 3 variables 3 Sont elles des variables locales ou globales 4 Supprimer VAR3 5 Pouvez vous voir les 2
98. e echo echo Je vous redonne la main maintenant echo Dans un script correct les premi res lignes sont habituellement des commentaires sur son but Puis chaque portion importante de code devrait tre comment e autant que la clart le demande Les scripts d init Linux par exemple dans le r pertoire init d sont g n ralement bien document s puisque ils doivent tre lisibles et ditables par quiconque utilise Linux 3 D bugger NdT corriger les scripts Bash 3 1 D bugger le script globalement Quand les choses ne vont pas comme attendues vous devez d terminer qu est ce qui provoque cette situation Bash fournit divers moyens pour d bugger La plus commune est de lancer le sous Shell avec l option x ce qui fait s ex cuter le script en mode d bug Une trace de chaque commande avec ses arguments est affich e sur la sortie standard apr s que la commande ait t interpr t e mais avant son ex cution Ceci est le script commented scriptl sh ex cut en mode d bug Notez que les commentaires ne sont pas visibles dans la sortie du script willy scripts gt bash x scriptil sh clear echo Le script d marre Le script d marre echo Salut willy Salut willy echo echo Je vais maintenant vous afficher une liste des utilisateurs connect s pi Je vais maintenant vous afficher une liste des utilisateurs connect s echo W 4 50pm up 18 days 6 49 4 users load average 0 58 0 62
99. e GNU et UNIX offre des outils pour l administration de syst me de type UNIX qui sont libres et qui respectent les standards UNIX Bash est un Shell compatible avec sh qui incorpore des sp cificit s utiles du Korn Shell ksh et du C Shell csh Il est cens se conformer la norme IEEE POSIX P1003 2 ISO 9945 2 Standards des Shell et Outils Il offre des am liorations fonctionnelles par rapport sh pour la programmation et l utilisation interactive ce qui inclut l dition de commande en ligne historique illimit des commandes contr le des travaux fonctions Shell et alias tableau index de taille illimit e et l arithm tique d entiers dans toutes les bases depuis la base 2 jusqu la base 64 Bash peut ex cuter la plupart des scripts sh sans modification Comme les autres projets GNU le projet bash a t lanc pour pr server prot ger et promouvoir la libert d utiliser tudier copier modifier et redistribuer les logiciels Il est g n ralement admis que de telles conditions stimulent la cr ativit Cela a t le cas avec le programme Bash qui a beaucoup de fonctionnalit s que les autres Shells n offrent pas 2 2 Fonctionnalit s offertes seulement par le Bash 2 2 1 Invocation En plus de l option permettant des commandes Shell un caract re qui peut tre configur g n ralement avec la commande int gr e set il y a plusieurs options multi caract res que vous pouvez employer Nous verrons quelques u
100. e anonyme La redirection pour la commande en cours est trait e de gauche droite La redirection de N gt amp M ou N lt amp M apr s une commande a pour effet de cr er ou modifier le lien symbolique proc self fd N avec la m me cible que le lien symbolique proc self fd M Les redirections de N gt file et N lt file ont pour effet de cr er ou modifier le lien symbolique proc self fd N avec le fichier cible La fermeture du descripteur de fichier N gt amp a pour effet de supprimer le lien symbolique proc self fd N Seulement maintenant la commande courante est ex cut e Quand vous lancez un script depuis la ligne de commande rien ne change tellement parce que le processus Shell enfant utilisera les m mes descripteurs que son parent Quand le parent n existe pas par exemple quand vous lancez un script par l outil cron les descripteurs standards sont des tubes et autres fichiers temporaires moins qu un autre moyen de redirection soit employ Ceci est d montr dans l exemple ci dessous lequel produit le r sultat avec un simple script at michel gt date Fri Jan 24 11 05 50 CET 2003 michel gt at 1107 avertissement les commandes seront ex cut es avec par ordre a SHELL b login shell c bin sh at gt ls l proc self fd gt var tmp fdtest at at gt lt EOT gt job 10 at 2003 01 24 11 07 michel gt cat var tmp fdtest at total 0 Lr x 1
101. e ce guide Les logos marques d pos es et les symboles utilis s dans ce guide sont la propri t de leur d positaire respectif 8 De quoi avez vous besoin Bash t l chargeable http www gnu org directory GNU Le Bash accompagne peu pr s tous les syst mes Linux et se trouve maintenant sur un large ventail de syst mes UNIX Se compile ais ment si vous avez besoin de le personnaliser test sur un large ventail d UNIX Linux MS Windows et autres syst mes 9 Conventions employ es dans ce document Les conventions typographiques et d usage suivantes apparaissent dans le texte pographiq 8 pp Tableau 1 Conventions typographiques et d usage Type de texte sens Texte entre guillemets Citation de gens texte rendu par l ordinateur entre guillemets Capture des donn es saisies ou affich es sur le terminal g n ralement rendue avec un fond gris clair reproduction de la vue du terminal commande Nom d une commande qui peut tre tap e sur la ligne de commande VARIABLE Nom d une variable ou pointeur vers le contenu d une variable comme VARNAME option Option d une commande comme l option a de la commande Is argument Argument d une commande comme dans read man Ls Synopsis de commande ou emploi habituel sur commande options param tres une ligne s par e Type de texte sens NomDeFichier Nom d un fichier ou d un r pertoire par exemple se positionner dans l
102. e corps de la fonction Ces commandes sont ex cut es du moment que FONCTION est sp cifi en tant que nom de commande Le statut d ex cution est celui de la derni re commande ex cut e dans le corps de la fonction Erreurs communes Les accolades doivent tre s par es du corps de la fonction par un espace sinon elles sont interpr t es d une mauvaise fa on Le corps d une fonction doit se terminer par un point virgule ou un saut de ligne 1 3 Les param tres positionnels dans les fonctions Les fonctions sont comme des mini scripts elles peuvent accepter des param tres elles peuvent utiliser des variables connues seulement dans la fonction avec l int gr e Shell local et elles peuvent renvoyer des valeurs au Shell appelant Une fonction a aussi un syst me pour interpr ter des param tres positionnels Cependant les param tres positionnels pass s une fonction n ont pas n cessairement les m mes valeurs que ceux pass s une commande ou un script Quand une fonction est ex cut e les arguments de la fonction deviennent les param tres positionnels le temps de l ex cution Le param tre sp cial qui est remplac par le nombre de param tres positionnels est modifi en cons quence Le param tre positionnel 0 est inchang La variable Bash FUNCNAME est valoris avec le nom de la fonction tandis qu elle s ex cute Si l int gr e return est ex cut e dans une fonction la fonction s interrompt et l
103. e la forme dev fd N alors le descripteur de fichier N est utilis Si l option FICHIER d une expression est de la forme dev stdin dev stdout ou dev stderr alors le descripteur de fichier o 1 ou 2 respectivement est utilis Les conditions sont discut es en d tail au Chapitre 7 Les instructions de condition Plus d informations au sujet des descripteurs de fichiers la Section 2 3 Redirection et descripteurs de fichiers 2 2 5 L arithm tique avec Shell Le Shell permet aux expressions arithm tiques d tre valu es en tant que processus d expansion ou par l int gr e let L valuation utilise des entiers de longueur fixe sans v rification de possible d bordement de capacit mais avec un contr le de la division par o qui renvoie une erreur Les op rateurs leur ordre et leur associativit sont pareil que dans le langage C voir Chapitre 3 L environnement du Bash 2 2 6 Alias Les alias permettent une cha ne d tre substitu e par un mot quand il est utilis comme le premier mot d une commande simple Le Shell maintient une liste d alias qui peuvent tre d clar s ou supprim s avec les commandes alias et unalias Bash lit toujours au moins une ligne compl te saisie avant d ex cuter une des commandes de cette ligne L alias est interpr t quand la commande est lue non pas quand elle est ex cut e De ce fait une d finition d alias apparaissant sur la m me ligne qu une autre commande ne
104. e of the combined work In the combination you must combine any sections entitled History in the various original documents forming one section entitled History likewise combine any sections entitled Acknowledgements and any sections entitled Dedications You must delete all sections entitled Endorsements 7 Collections of documents You may make a collection consisting of the Document and other documents released under this License and replace the individual copies of this License in the various documents with a single copy that is included in the collection provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects You may extract a single document from such a collection and distribute it individually under this License provided you insert a copy of this License into the extracted document and follow this License in all other respects regarding verbatim copying of that document 8 Aggregation with independent works A compilation of the Document or its derivatives with other separate and independent documents or works in or on a volume of a storage or distribution medium does not as a whole count as a Modified Version of the Document provided no compilation copyright is claimed for the compilation Such a compilation is called an aggregate and this License does not apply to the other self contained works thus compiled with the Document on account of their bei
105. e r pertoire usr bin Touche Touches a frapper sur le clavier exemple taper Q pour quitter Bouton Bouton graphique sur lequel cliquer comme le bouton OK Menu Choix Options choisir dans un menu graphique par exemple Choisir Aide A propos de Mozilla dans votre navigateur Terminologie Terme important ou concept Le noyau est le coeur du syst me La barre oblique invers e affich e dans un terminal ou dans un synopsis de commande indique que la ligne n est pas finie NdT nous appelerons ce symbole l chappement En d autres mots si vous voyez une longue commande qui est d coup e en plusieurs lignes signifie Ne pressez pas encore la touche Entr e encore Voir Chapitre 1 Bash et scripts Bash Lien vers sujets connexes dans ce guide L auteur Lien vers une ressource WEB externe 10 Organisation de ce document Ce guide expose des concepts utiles dans la vie de tous les jours de l utilisateur Bash assidu Bien qu une connaissance basique du shell soit requise nous commen ons par aborder les composants et pratiques de base dans les 3 premiers chapitres Les chapitres 4 6 abordent les outils de base qui sont utilis s r guli rement dans les scripts Les chapitres 8 12 abordent les constructions les plus courantes dans les scripts Tous les chapitres sont accompagn s d exercices qui testent votre aptitude aborder le chapitre suivant Chapitre 1 Bash et
106. ebugging D bugger le script globalement echo statements D bugger qu une partie du script on entire script D bugger le script globalement options D bugger qu une partie du script partial D bugger qu une partie du script E exit status arguments Emploi de l instruction exit et du if expansion arithmetic expansion L expansion arithm tique brace expansion L expansion d accolades command substitution La substitution de commande file name expansion Expansion de noms de fichier indirect expansion Param tre Shell et expansion de variable process substitution La substitution de processus tilde expansion L expansion du tilde variable expansion Param tre Shell et expansion de variable word splitting Le d coupage de mots F features aliases Alias arrays Tableaux conditionals Les conditions directory stack Pile de r pertoires interactive shells Qu est ce qu un Shell interactif invocation Invocation prompt L invite restricted shell Le Shell restreint scripts Les scripts Shell shell arithmetic L arithm tique avec Shell startup files Fichiers de d marrage de Bash fichier de configuration etc passwd Types de Shell etc shells Types de Shell file name expansion characters Expansion de noms de fichier function arguments Les param tres positionnels dans les fonctions example arguments Les param tres positionnels dans les fonctions functions execution La fonction Shell restricted shel
107. echo Pweepwishpeeterdepweet exit 2 else echo Voulez vous lire cette affiche exit 3 fi fi Ce script est appel depuis le suivant qui donc exporte ses variables menu et animal anny testdir gt cat feed sh bin bash Ce script proc de selon le statut d ex cution renvoy par penguin sh export menu 1 export animal 2 feed nethome anny testdir penguin sh feed menu animal case in 1 echo Gaffe Vous feriez mieux de lui donner du poisson avant qu il ne s nerve D echo Gaffe C est cause de gens comme vous qu il quitte la terre tout le temps 3 07 echo Gaffe Achetez la nourriture que le zoo fournit pour les animaux i comment pensez vous c echo Gaffe N oubliez pas le guide esac anny testdir gt feed sh apple penguin Tux d teste a Tux veut du poisson Gaffe Vous feriez mieux de lui donner du poisson avant qu il ne s nerve Comme vous le voyez le statut d ex cution peut tre d termin librement Les commandes ont souvent une s rie de codes d finis voir le manuel du programmeur pour plus d informations sur chaque commande 3 Utiliser les instructions case 3 1 Les conditions simplifi es Les instructions if imbriqu es paraissent pratiques mais d s que vous tes confront s quelques variantes cela engendre la confusion Pour des conditions complexes employez la syntaxe de case case EXPRESSION in CASE1 COMMAND LIST CASE2 COM
108. ed from octarine localhost 127 0 0 1 by octarine 8 12 5 8 12 5 with ESMTP id hOELAlLBGO20414 for lt anny octarine gt Tue 14 Jan 2003 22 10 47 0100 Received from anny localhost by octarine 8 12 5 8 12 5 Submit id hOELA1Ltn020413 for anny Tue 14 Jan 2003 22 10 47 0100 Date Tue 14 Jan 2003 22 10 47 0100 From Anny lt anny octarine gt Message Id lt 200301142110 h0ELALtn020413 octarine gt To anny octarine Subject disk report Tue Jan 14 22 10 47 CET 2003 Commencer a songer a faire de la place Il y a une partition qui est 87 pleine anny testdir gt Bien s r vous pourriez avoir ouvert votre programme de messagerie pour contr ler le r sultat c est juste pour montrer que le script envoie un mail correct avec To Subject and From header lines Beaucoup plus d exemples de l instruction case peuvent tre trouv s dans le r pertoire des scripts d initialisation de votre syst me Le script de d marrage emploie un case start et stop pour d marrer ou arr ter les processus du syst me Un exemple th orique peut tre trouv dans la section suivante 3 2 Exemple de script d initialisation Les scripts d initialisation ont souvent l usage d instructions case pour d marrer arr ter et mettre en file d attente les services du syst me Voici un extrait du script qui d marre Anacron un d mon qui lance des commandes p riodiquement avec une fr quence sp cifi e en jours case 1
109. eeds free documentation a free program should come with manuals providing the same freedoms that the software does But this License is not limited to software manuals it can be used for any textual work regardless of subject matter or whether it is published as a printed book We recommend this License principally for works whose purpose is instruction or reference 2 Applicability and definitions This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License The Document below refers to any such manual or work Any member of the public is a licensee and is addressed as you A Modified Version of the Document means any work containing the Document or a portion of it either copied verbatim or with modifications and or translated into another language A Secondary Section is a named appendix or a front matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document s overall subject or to related matters and contains nothing that could fall directly within that overall subject For example if the Document is in part a textbook of mathematics a Secondary Section may not explain any mathematics The relationship could be a matter of historical connection with the subject or with related matters or of legal commercial philosophical ethical or political positi
110. ements 3 4 Les variables d finies par l utilisateur 3 5 Plus d exemples 3 6 Le programme printf 4 R sum 5 Exercices 7 Les instructions de condition 1 Introduction de if 1 1 G n ralit 1 2 Applications simples de if 2 L emploi avanc de if 2 1 les blocs if then else 2 2 Les blocs if then elif else 2 3 Les instructions if imbriqu es 2 4 Op rations bool ennes 2 5 Emploi de l instruction exit et du if 3 Utiliser les instructions case 3 1 Les conditions simplifi es 3 2 Exemple de script d initialisation 4 R sum 5 Exercices 8 Ecrire des scripts interactifs 1 Afficher les messages utilisateurs 1 1 Interactif ou pas 1 2 Utiliser la commande int gr e echo 2 R cup rer la saisie utilisateur 2 1 L emploi de la commande ae read 2 2 Demander une entr e utilis 2 3 Redirection et descripteurs de fichiers 2 4 Fichier d entr e et fichier de sortie 3 R sum 4 Exercices 9 T ches r p titives 1 La boucle loop 1 1 Comment a marche 1 2 Exemples La boucle while 2 1 Qu est ce que c est 2 2 Exemples La boucle until rae Qu est ce que c est D ion d entr e sortie et boucles 4 1 Redirection des entr es 4 2 Redirection des sorties 5 Break et continue 5 1 L int gr e break 5 2 L int gr e continue 5 3 Exemples 6 Faire des menus avec l int gr e select 6 1 G n ralit 7 L int gr e shift 7 1 Qu est ce qu elle fait 7 2 Exem
111. en listes de fichiers et commandes avec arguments e Au besoin il est proc d des redirections les op rateurs de redirection et leurs op randes sont limin s de la liste des arguments Les commandes sont ex cut es e Optionnellement le Shell attend que la commande s ach ve pour r cup rer son statut d ex cution 4 1 2 Les commandes Shell Une simple commande Shell telle que touch file1 file2 file3 consiste en la commande elle m me suivie par des arguments s par s par des espaces Les commandes Shell plus complexes sont des compositions vari es de commandes simples en tube lequel d livre le r sultat d une commande sur le canal d entr e de la suivante en boucle ou en construction de conditions et encore d autres fa ons Quelques exemples ls more gunzip file tar gz tar xvf 4 1 3 La fonction Shell Les fonctions Shell sont un moyen de grouper des commandes pour une ex cution ult rieure par l appel d un nom pour le groupe Elles sont ex cut es tout comme des commandes r guli res Quand le nom de la fonction Shell est employ comme le nom d une commande simple la liste des commandes associ es cette fonction est ex cut e Les fonctions Shell sont ex cut es dans le contexte en cours du Shell elles ne sont pas interpr t es dans un nouveau processus Les fonctions sont expliqu es au Chapitre 11 Fonctions 4 1 4 Les param tres Shell Un param tre est une entit qui m mor
112. ennent la forme d un pr fixe optionnel suivi d une s rie de cha nes s par es par des virgules le tout l int rieur d accolades suivi par un suffixe optionnel Le pr fixe enrichit chaque cha ne au d but puis son tour le suffixe enrichit la fin r sultant en une expansion de gauche droite L expansion d accolades peut tre imbriqu e Le r sultat des cha nes ainsi obtenues n est pas tri l ordre de gauche droite est pr serv franky gt echo SPIP il al l spell spill spal L expansion d accolade est effectu e avant tout autres et tout caract re sp cial en vue d un autre type d expansion est pr serv dans ce r sultat C est strictement textuel Bash n applique aucune interpr tation syntaxique au contexte de l expansion ou au texte entre accolades Pour viter des conflits avec l expansion de param tres la cha ne n est pas ligible l expansion d accolade Une forme correcte d expansion d accolades doit contenir une accolade ouvrante et fermante non prot g e et au moins une virgule non prot g e Toute forme d expansion d accolade incorrecte est laiss e telle quelle 4 3 L expansion du tilde Si un mot commence par un tilde non prot g tous les caract res jusqu au premier slash non prot g ou tous les caract res si il n y a pas de slash non prot g sont consid r s comme un pr fixe tilde Si aucun des caract res dans le pr fixe tilde n est prot g ces caract re
113. ercices R sum Dans ce chapitre nous traiterons les sujets suivants e Signaux disponibles e Int r t des signaux Emploi de l instruction trap e Comment viter que les usagers interrompent votre programme 1 Signaux 1 1 Introduction 1 1 1 Trouver la page man de signal Votre syst me contient une page man qui liste tous les signaux disponibles mais selon votre syst me elle peut tre affich e de diverses fa ons Sur la plupart des Linux ce sera avec man 7 signal Dans le doute localisez la page man exacte ainsi que la section avec une commande comme man k signal grep list ou l option apropos signal grep list Les noms de signaux peuvent tre trouv s avec kill l 1 1 2 Les signaux en direction de votre Shell Bash En l absence de toute trappe un Shell Bash interactif ignore SIGTERM et SIGQUIT SIGINT est r cup r et consid r et si le contr le de travaux est actif SIGTTIN SIGTTOU et SIGTSTP sont aussi ignor s Les commandes qui sont lanc es en tant que r sultat de substitution de commandes ignorent aussi ces signaux quand le clavier les a g n r s SIGHUP par d faut fait quitter le Shell Un Shell interactif enverra un SIGHUP tous les travaux en ex cution ou pas voir la documentation sur l int gr e disown si vous souhaitez d sactiver ce comportement pour un processus particulier Utilisez l option huponexit pour tuer tous les travaux a la r ception du signal SIGHUP avec l int gr e sho
114. ertoire built ins dans l arbre des sources Bash et jeter un coup d oeil fc def qui est ex cut e la compilation des int gr es Une autre raison pour laquelle de bons exemples sont difficiles trouver est que tous les Shell ne reconnaissent pas les tableaux ce qui g ne la compatibilit Apr s des jours de recherche j ai finalement trouv cet exemple qui s ex cute chez un fournisseur INTERNET Il distribue des fichiers de configuration de serveur WEB Apache sur des h tes dans une ferme WEB bin bash if whoami root then echo Must be root to run 0 exit 1 fi if z 1 then echo Utilisation 0 lt path to httpd conf gt exit 1 fi httpd_conf_new 1 httpd conf path usr local apache conf login htuser farm_hosts web03 web04 web05 web06 web07 for i in farm hosts do su login c scp httpd conf new i httpd conf path su login c ssh i sudo usr local apache bin apachectl graceful done exit 0 D abord 2 tests sont effectu s pour contr ler que l utilisateur idoine fait s ex cuter ce script avec les param tres ad hoc Les noms des h tes qui doivent tre configur s sont list s dans le tableau farm_hosts Puis tous ces h tes sont charg s avec le fichier de configuration Apache apr s quoi le d mon est red marr Notez l emploi de commandes de la suite Secure Shell qui encryptent les connections aux h tes distants Merci Eug ne et ses coll gues pour
115. es reconnues par sh le sont aussi par bash Cependant l inverse n est pas toujours vrai Tous les exemples et exercices de ce livre utilisent bash e csh ou C shell la syntaxe de ce Shell ressemble celle du langage de programmation C Parfois demand e par les programmeurs tcsh ou TENEX C Shell un surensemble du r pandu Shell C impl mentant convivialit et rapidit C est pourquoi certains l appellent aussi le Turbo Shell C ksh ou le Korn shell quelques fois appr ci des gens venant du monde UNIX Un sur ensemble du Bourne Shell avec une configuration le cauchemar des d butants standard Le fichier etc shells donne un aper u des Shells connus du syst me Linux mia gt cat etc shells bin bash bin sh bin tcsh bin csh Votre Shell par d faut est d clar dans le fichier etc passwd comme cette ligne pour l utilisateur mia mia L2NOfqdlPrHwE 504 504 Mia Maya home mia bin bash Pour permuter d un Shell un autre simplement entrez le nom du nouveau Shell actif dans le terminal Le syst me trouve le r pertoire o le nom appara t au moyen des param tres de PATH et puisqu un Shell est un fichier ex cutable programme le Shell courant l active et il s ex cute Une nouvelle invite est souvent affich e du fait que chaque Shell a une interface propre mia gt tcsh mia post21 2 Avantages du Bourne Again SHell 2 1 Bash est le Shell GNU Le projet GNU ne pas confondr
116. es statuts d ex cution des processus les plus r cemment ex cut s en avant plan ventuellement une seule commande Si cette variable est d finie quand bash d marre le Shell entre en mode POSIX L identifiant du process parent du Shell D finie la valeur est interpr t e comme une commande ex cuter avant l affichage de chaque invite PS1 La valeur de cette variable est utilis e comme l invite pour la commande select Par d faut 2 La valeur est l invite affich e avant que la commande soit affich e en echo quand l option x est activ e par defaut Renvoie le nom de r pertoire courant d fini par l int gr e cd Chaque fois que cette variable est r f renc e un entier entre o et 32767 est g n r Le fait d assigner une valeur cette variable r initialise le g n rateur Param tre par d faut de l int gr e read Renvoie le nombre de secondes coul es depuis que le Shell est lanc Une liste des options Shell activ es s par es par deux points Valeur augment e de 1 chaque fois qu une nouvelle instance de Bash est lanc e Cette valeur est un param tre utilis pour formater le r sultat de chronom trage des instructions ex cut es dans un tube pipeline lorsque le mot r serv time est sp cifi D fini une valeur sup rieure z ro TMOUT est consid r comme le temps imparti maximum l int gr e read Dans un Shell interactif la val
117. essage Pour le r pertoire donn afficher les 5 fichiers les plus gros et les 5 fichiers le plus r cemment modifi s 3 Pouvez vous expliquer pourquoi il est si important de mettre les variables entre guillemets dans l exemple de la Section 4 2 Redirection des sorties 4 Ecrivez un script similaire celui de la Section 5 1 L int gr e break mais pensez un moyen de quitter apr s que l usager ait effectu 3 boucles 5 Penser une meilleur solution que move b pour le script de la Section 5 3 Exemples pour viter d craser les fichiers existants Par exemple tester si un fichier existe ou pas Ne faites pas de travail inutile 6 R crire le script whichdaemon sh de la Section 2 4 Op rations bool ennes de sorte qu il Affiche une liste des serveurs contr ler tel que Apache le serveur SSH le d mon NTP un d mon nom un d mon d administration etc Pour chaque choix l utilisateur peut afficher des informations importantes telles que le nom du serveur WEB les informations de trace NTP etc Optionnellement pr voir une possibilit pour les utilisateurs de contr ler d autres serveurs que ceux list s Dans de tels cas v rifiez que au moins le processus en question tourne Revoir les scripts de la Section 2 2 4 Calcul d une moyenne Remarquez comment les caract res entr s autre que q sont trait s R crire ce script afin qu il affiche un message si des caract res s
118. est r f renc au moyen d une variable dans ce cas c est le premier param tre du script Alternativement quand aucun param tre n est donn l emplacement du fichier est m moris g n ralement dans une variable au d but du script et son contenu est connu par l invocation de la variable De sorte que si vous voulez changer le nom d un fichier dans un script vous n avez que le modifier une fois Nom de fichier avec des espaces L exemple plus haut chouera si la valeur de 1 peut tre d coup e en plusieurs mots Dans ce cas la commande if peut tre fig e soit en mettant des guillemets autour du nom de fichier soit en employant au lieu de 2 2 Les blocs if then elif else 2 2 1 G n ralit C est la forme compl te de l instruction if if TEST COMMANDS then CONSEQUENT COMMANDS elif MORE TEST COMMANDS then MORE CONSEQUENT COMMANDS else ALTERNATE CONSEQUENT COMMANDS fi La liste TEST COMMANDS est ex cut e et si son statut d ex cution est z ro la liste CONSEQUENT COMMANDS est ex cut e Si TEST COMMANDS renvoie un statut diff rent de z ro chaque liste elif est ex cut e son tour et si leur statut d ex cution est z ro le MORE CONSEQUENT COMMANDS correspondant est ex cut et la commande se termine Si else est suivi par une liste ALTERNATE CONSEQUENT COMMANDS et que la derni re commande dans le dernier if ou elif renvoie un statut diff rent de z ro alors ALTERNATE
119. et les commandes r parties dans les r pertoires du syst me Bash admet des int gr es suppl mentaires qui ne sont pas connues du classique Bourne Shell Les scripts Shell comportent ces commandes agenc es selon la syntaxe dict e par Shell Les scripts sont lus et ex cut s ligne par ligne et devraient avoir une structure logique 7 Exercices Ces exercices vont vous entra ner pour le prochain chapitre 1 O le programme bash est localis sur le syst me 2 Utilisez l option version pour d terminer quelle version tourne 3 Quels fichiers de configuration du Shell sont lus quand vous vous faites authentifier par le syst me au moyen de l interface graphique puis en ouvrant une fen tre de console 4 Les Shell suivants sont ils interactifs Sont ils des Shell d authentification Un Shell ouvert en cliquant dans l arri re plan de votre bureau graphique sur l ic ne Terminal ou l quivalent dans un menu Un Shell que vous obtenez apr s avoir lanc la commande ssh localhost Un Shell que vous activez en vous connectant la console en mode texte Un Shell activ par la commande xterm amp Un Shell activ par le script mysystem sh Un Shell que vous activez sur un syst me distant pour lequel vous n aviez pas besoin de vous authentifier parce que vous utilisez SSH et peut tre des cl s SSH 5 Pouvez vous expliquer pourquoi bash ne quitte pas quand vous frapper les touches Ctrl C sur la ligne de commande
120. etc bashrc afin de l inclure dans le processus d initialisation du Shell la connexion Vous pouvez voir aussi que etc profile sur votre syst me contient seulement l environnement Shell et le param trage du programme de d marrage tandis que etc bashrc contient des d finitions pour des fonctions Shell et des alias qui s appliquent tout le syst me Le fichier etc bashrc peut tre appel dans etc profile ou dans les fichiers d initialisation Shell de chaque utilisateur Le source contient des exemples de fichiers bashrc ou vous pouvez en trouver une copie dans usr share doc bash 2 05b startup files Ceci fait partie de bashrc et vient avec la documentation Bash alias Ll 1s l alias dir ls ba alias c clear alias ls ls color alias mroe more alias pdw pwd alias sl ls color ay local pid pid ps ax grep iB grep v hae gawk print 1 echo n killing 1 process pid kill 9 pid echo slaughtered A part les alias g n raux il contient des alias pratiques qui rendent correctes des commandes m me mal libell es Nous traiterons des alias la Section 5 2 Cr er et supprimer des alias Ce fichier contient une fonction pskill qui sera tudi e en d tail au Chapitre 11 Fonctions 1 2 Les fichiers de configuration utilisateur Je n ai pas ces fichiers Ces fichiers peuvent tre absent de votre r pertoire racine cr er les au besoin 1 2 1 bash p
121. eur est consid r e comme un nombre de secondes durant lesquelles une saisie est attendue Bash se termine apr s ce laps de temps si aucune entr e n est faite Le nombre le v ritable identifiant de l usag actif Consultez le man Bash les pages info et doc pour de plus amples explications Certaines variables sont en lecture seule d autres sont d finies automatiquement et d autres perdent leur sens initial quand elles sont red finies 2 5 Param tres sp ciaux Le Shell consid re certains param tres sp cifiquement Ces param tres ne peuvent qu tre r f renc s leur affectation n est pas permise Tableau 3 3 Les variables Bash sp ciales Nom 0 versus D finition Est remplac par tous les param tres positionnels sauf le premier 0 Quand l expansion se produit entre guillemets cela revient a avoir un seul mot avec la valeur de chaque param tre s par e par le premier caract re de la variable sp ciale IFs Est remplac par tous les param tres positionnels sauf le premier o Quand l expansion se produit entre guillemets chaque param tre est un mot part enti re Renvoie le nombre de param tres positionnels en d cimal Renvoie le statut d ex cution de l instruction la plus r cemment ex cut e en avant plan dans un tube Renvoie les options d clar es lors de l invocation de l int gr e set ou celles positionn es par le Shell lui m
122. eur par une instruction ult rieure de m me qu elle ne peut tre supprim e t Donne chaque variable l attribut trace X Marque chaque variable comme export e pour les commandes suivantes via l environnement L emploi de au lieu de inhibe les attributs Quand c est employ dans une fonction declare cr des variables locales L exemple suivant montre comment l assignation du type de variable influence la valeur bob in declare i VARIABLE 12 bob in VARIABLE string bob in echo VARIABLE 0 bob in declare p VARIABLE declare i VARIABLE 0 Notez que Bash a une option pour d clarer une valeur num rique mais aucune pour une valeur cha ne Ceci s explique puisque par d faut si aucune sp cification n est indiqu e une variable peut stocker tout type de donn e bob in OTHERVAR blah bob in declare p OTHERVAR declare OTHERVAR blah D s que vous restreignez l affectation de valeurs une variable elle ne peut que contenir ce type de donn e Les restrictions possibles sont soit entier constante ou tableau Voir les pages info de Bash pour une aide sur le statut renvoy 1 3 Constantes En Bash les constantes sont cr es en mettant en lecture seule une variable L int gr readonly marque chaque variable sp cifi e comme non modifiable La syntaxe est readonly OPTION VARIABLE s La valeur de ces variables ne peut plus tre chang e par une instruction ult r
123. euvent tirer b n fice de la lecture de ce guide Les lecteurs qui ont d j pris en main le syst me via la ligne de commande apprendront les ficelles de l criture de shell qui facilitent l ex cution des t ches quotidiennes L administration de syst me repose grandement sur l criture de shell Les t ches courantes sont automatis es avec de simples scripts Ce document est plein d exemples qui vous encourageront crire les v tres et qui vous inciteront am liorer ceux existants Pr requis Ce qui n est pas dans ce guide Vous devriez q q p gu e tre familiaris avec UNIX ou Linux les commandes de bases les pages de manuel et de documentation e tre capable d utiliser un diteur de texte e Comprendre les processus d initialisation et d arr t du syst me init et scripts d initialisation Savoir cr er des utilisateurs et des groupes d clarer des mots de passe Savoir donner des droits et des modes d acc s e Comprendre les conventions de nommage des p riph riques le partitionnement ainsi que le montage et d montage des syst mes de fichiers Savoir ajouter et retirer des logiciels du syst me Voir Introduction to Linux ou votre miroir TLDP TLDP mirror si vous ignorez l un de ces aspects Des informations compl mentaires peuvent tre trouv es dans la documentation de votre syst me man info pages ou l the Linux Documentation Project 3 Nouvelles versions traductions
124. ex cution reprend avec la commande qui suit la fonction appel e Quand une fonction s ach ve les valeurs des param tres positionnels et le param tre sp cial sont restaur s la valeur qu ils avaient avant l ex cution de la fonction Si un argument num rique est donn return c est ce statut qui est retourn Un exemple simple lydia cointreau test cat showparams sh bin bash echo Ce script montre l emploi d arguments de fonction echo echo Le param tre positionnel 1 pour le script est 1 echo test echo Le param tre positionnel 1 pour la fonction est 1 RETURN VALUE echo Le code retour de cette fonction est RETURN VALUE test other param liydiaocointreau test res parameterl Ce script montre l emploi d arguments de fonction Le param tre positionnel 1 pour le script est 1 Le param tre positionnel 1 pour la fonction est other param Le code retour de cette fonction est 0 lydia cointreau test Notez que la valeur retourn e ou code retour de la fonction est souvent stock e dans une variable afin qu elle puisse tre test e ult rieurement Les scripts d initialisation de votre syst me souvent emploient la technique de tester la variable RETVAL comme ceci if RETVAL eq 0 Ii then lt lancer le d mon gt Ou comme cet exemple tir du script etc init d amd o l optimisation de Bash est mis en oeuvre RETVAL 0 amp amp touch var lock subsys amd
125. faire si le test est faux Une expression r guli re peut tre employ e aussi dans les comparaisons anny gt genre f minin anny gt if genre f More input gt then echo Tr s honor Madame fi Tr s honor Madame anny gt Les vrais Programmeurs La plupart des programmeurs pr f reront employer l int gr e test qui est quivalent l emp de comparaison comme ceci test whoami root amp amp echo vous tes connect s avec un compte non administrate No exit Si vous appelez exit dans un sous Shell celui ci ne passera pas de variables son parent Employez and au lieu de and si vous ne voulez pas que Bash en fourchant cr e un sous Shell Voir les pages info de Bash pour plus de d tails sur la correspondance de patron avec les blocs EXPRESSION et EXPRESSION 2 L emploi avanc de if 2 1 les blocs if then else 2 1 1 Exemple simple Voici la construction employer pour que le cours du traitement s oriente d une fa on si la commande if renvoie vrai et d une autre si elle renvoie faux Un exemple freddy scripts gt genre masculin freddy scripts gt if genre f More input gt then echo Tr s honor Madame More input gt else echo Comment se fait il que le verre de Madame soit vide More input gt fi Comment se fait il que le verre de Madame soit vide freddy scripts gt D versus
126. fonction wait Attend qu une t che de fond se termine 2 Fonctionnalit s sp cifiques La table suivante montre les principales diff rences des Shell courants sh Bourne Again SHell bash Korn shell ksh et le C shell csh Compatibilit des Shell Parce que Bash est un sur ensemble de sh toutes les commandes sh fonctionnent en Bash mais pas vice versa Bash a bien plus de possibilit s qui lui sont propres et comme le montre la table suivante beaucoup de possibilit s venant d autres Shell Parce que le Turbo C Shell est un sur ensemble de csh toutes les commandes csh fonctionnent en tesh mais l inverse n est pas vrai Tableau A 2 Diff rences de fonctionnalit s des Shell sh Bash ksh csh Signification Action L invite utilisateur par d faut gt l gt l gt Force la redirection gt fichier amp gt fichier ou gt fichier 2 gt amp 1 gt fichier gt amp fichier Redirige stdout et 2 gt amp 1 2 gt amp 1 stderr sur fichier Expansion des l ments de la liste commande commande ou commande commande commande Remplace par le r sultat de la commande incluse HOME HOME HOME home R pertoire utilisateur p Symbole quivalent au r pertoire utilisateur dirs N Acc de la pile des r pertoires var value VAR value var value set var value Affectation de variable export var export VAR value export setenv var val Publie une variable
127. ge l entr e Document en ligne redirige l entr e Sortie par un tube Place le travail en tache de fond S pare des commandes sur une m me ligne Correspond a n importe quel s caract re s dans un nom de fichier Correspond a n importe quel caract re unique dans un nom de fichier Correspond a n importe quels caract res inclus S ex cute dans un sous Shell Substitue le contenu par le r sultat de la commande incluse Guillemets ou citation partielle permet l expansion de variables et de commandes Apostrophes ou citation totale pas d expansion Citation du caract re qui suit NdT emploi du caract re dans son sens litt ral gt chappement Emploie la valeur de la variable Identifiant du processus Nom de la Commande Ni me argument N entre o et 9 Commence un commentaire Ex cution en t che de fond Sortir d une instruction de boucle Change de r pertoire Passe l it ration suivante d une boucle dans un programme Affiche le r sultat Evalue les arguments Ex cute un nouveau processus Shell Ex cution dans la session en cours Affiche les travaux en cours Termine un travail en cours Commande sens newgrp Change de groupe l utilisateur shift D cale les param tres positionnels stop Suspend un travail en t che de fond suspend Suspend un travail en cours dans la session time Chronom tre une commande umask Donne ou liste les permissions sur les fichiers unset Supprime une variable ou une
128. gr e Bash read Tableau 8 2 Options de l int gr e read Option sens a ANAME Les mots sont affect s s quentiellement aux l ments de la variable tableau ANAME en commen ant par l index o Tous les l ments sont supprim s de ANAME avant l affectation Les autres arguments NAME sont ignor s d DELIM Le premier caract re de DELIM est utilis pour terminer la ligne entr e plut t que le saut de ligne readline est utilis pour obtenir la ligne n NCHARS read s arr te apr s avoir lu NCHARS caract res plut t que d attendre une ligne entr e compl te p PROMPT Affiche le PROMPT sans saut de ligne final avant de tenter de lire tout autre entr e L invite est affich e seulement si l entr e vient d un terminal T Si cette option est donn e le slash invers n agit pas comme caract re d chappement Le slash invers est consid r comme faisant parti de la ligne En particulier un couple saut de ligne slash invers ne devrait pas tre utilis comme symbole de continuation de ligne S Mode Silencieux Si l entr e provient d un terminal les caract res n y sont pas renvoy s t TIMEOUT Donne un temps imparti read et renvoie une erreur si une ligne compl te n a pas t lue avant TIMEOUT secondes Cette option n a pas d effet si read n a pas son entr e depuis un terminal ou un tube u FD Obtenir les lignes entr es depuis le fichier de descripteur FD Ceci est un rapide
129. hda7 1 3G 272M 1018M 22 dev hdal 121M 9 4M 105M 9 boot dev hda2 13G 8 7G 3 7G 70 home dev hda3 13G 5 3G 7 1G 43 opt none 243M O 243M 0 dev shm dev hda6 3 9G 3 2G 572M 85 usr dev hda5 5 2G 4 3G 725M 86 var franky gt unalias dh franky gt dh bash dh command not found franky gt Bash lit toujours au moins une ligne compl te saisie avant d ex cuter une des commandes de cette ligne L alias est interpr t quand la commande est lue non pas quand elle est ex cut e De ce fait une d finition d alias apparaissant sur la m me ligne qu une autre commande ne prendra effet qu la lecture de la ligne suivante Les commandes suivant la d finition de l alias sur la ligne ne seront pas affect es par le nouvel alias Ce comportement joue aussi quand une fonction est ex cut e Un alias est interpr t quand la d finition d une fonction est lue pas quand la fonction est ex cut e parce que la d finition de fonction est elle m me une commande compos e En cons quence l alias d finit dans une fonction n est pas utilisable tant que la fonction n a pas t ex cut e En toute s curit toujours d finir les alias sur des lignes s par es et ne pas employer alias dans des commandes compos es Les processus enfants n h ritent pas des alias Bourne shell sh ne reconna t pas les alias Plus sur les fonctions au Chapitre 11 Fonctions Les fonctions sont plus rapides Les alias sont recherch s
130. i l usager n a pas eu encore de sauvegarde compl te afficher un message disant qu une compl te sera faite Dans le cas d une sauvegarde incr mentale ne la faire que si la compl te n est pas plus vieille que d une semaine Comprimer la sauvegarde avec un outil de compression quelconque Informer l usager que le script va compresser parce que a peut prendre du temps et l usager pourrait s inqui ter si aucun r sultat n appara t l cran Afficher un message indiquant l usager la taille de la sauvegarde compress e Voir info tar ou Introduction Linux chapitre 9 Preparing your data for background information 4 Ecrire un script appel simple useradd sh qui ajoute un utilisateur au syst me local Le script devrait Ne prendre qu un seul param tre ou sinon sortir avec un message d utilisation Contr ler etc passwd et s lectionner le premier identifiant non affect Afficher un message contenant l identifiant Cr er un groupe priv pour cet utilisateur en contr lant le fichier etc group Afficher un message contenant l identifiant du groupe Rassembler des informations sur l utilisateur un commentaire d crivant cet utilisateur choix dans une liste de Shell tester sa validit si non sortir avec un message la date d expiration du compte les autres groupes auxquels ce nouvel utilisateur peut appartenir Avec les informations obtenues ajouter une ligne etc passwd etc group et etc shado
131. i peut tre m moris e et exploit e au besoin 5 4 Un mot sur l ordre et la logique Afin d acc l rer les phases de d veloppement l ordre logique du programme devrait tre pens l avance C est votre premi re tape quand vous d veloppez un script Diverses m thodes peuvent tre utilis es une des plus courantes est la constitution de listes Lister les op rations n cessaires au programme vous permet de d crire chaque t che Les op rations unitaires peuvent tre r f renc es par leur num ro dans la liste En utilisant vos propres mots pour d terminer les op rations ex cuter par votre programme il vous sera plus facile de cr er un programme compr hensible Ensuite vous crivez le langage compris par Bash L exemple ci dessous montre un tel encha nement logique Il d crit la rotation des fichiers journaux Cet exemple montre la possible r it ration d une boucle en fonction du nombre de fichiers journaux sur lesquels vous voulez param trer une rotation 1 Voulez vous param trer la rotation de journaux a Si oui i Indiquez le r pertoire contenant les journaux sur lesquels la rotation se fera ii Entrez le nom g n rique du fichier journal iii Entrez le nombre de jours durant lesquels le journal doit tre conserv iv Enregistrer le param trage dans le fichier utilisateur crontab b Si non aller l tape 3 2 Voulez vous param trer la rotation d un autre ensemble de journaux
132. ichier d entr e et fichier de sortie 2 4 1 Avec dev fd Le r pertoire dev fd contient des entr es nomm es 0 1 2 etc Ouvrir le fichier dev fd N est quivalent dupliquer le descripteur N Si votre syst me poss de dev stdin dev stdout et dev stderr vous verrez qu ils sont quivalents dev fd 0 dev fd 1 et dev fd 2 respectivement La principale utilisation des fichiers dev fd est faites par le Shell Ce m canisme permet aux programmes qui utilisent des chemins en param tre de voir le standard d entr e et le standard de sortie de la m me fa on que d autres chemins Si dev fd n est pas disponible sur votre syst me vous devrez trouver un moyen pour r soudre ce probl me Ce qui peut tre fait par exemple avec un tiret qui indique que le programme doit lire depuis un tube Un exemple michel gt filter body txt gz cat header txt footer txt Ce texte est affich au d but de chaque travail d affichage et merci l administrateur d avoir mis en Texte a filtrer Ce texte est a afficher a la fin de chaque travail d affichage La commande cat d abord lit le fichier header txt puis son standard d entr e lequel est le standard de sortie de la commande filter et finalement le fichier footer txt Le sens sp cial du tiret en tant que param tre de ligne de commande pour se r f rer au standard d entr e ou de sortie est une confusion qui a perdur dans beaucoup de programmes Il peut aussi y avoir des pr
133. ier et ex cut es avec l option f Quand un tel fichier est cr assurez vous que e Aucun espace n est pr sent la fin des lignes Aucune apostrophe n est employ e Quand vous entrez du texte ajouter ou remplacer toutes sauf la derni re ligne finit par un slash invers 3 2 Ecrire des fichiers de r sultat Produire ce fichier se fait avec l op rateur de redirection de sortie gt Ceci est un script d exemple utile la cr ation de fichier HTML tr s simple partir de fichiers texte simples sandy gt cat script sed 1i lt html gt lt head gt lt title gt sed generated html lt title gt lt head gt lt body bgcolor ffffff gt lt pre gt a lt pre gt DATE a lt html gt sandy gt cat txt2html sh bin bash Ceci est un script simple pour convertir du texte en HTML D abord nous liminons tous les caract res de saut de ligne de sorte que l ajout ne se produise qu une fois puis nous remplacons les sauts de ligne echo converting 1 SCRIPT home sandy scripts script sed NAME 1 TEMPFILE var tmp sed PID tmp sed s n M 1 sed f SCRIPT sed s M n gt TEMPFILE mv TEMPFILE NAME echo done sandy gt 1 stocke le premier param tre d une commande donn e dans ce cas le nom du fichier convertir sandy gt cat test linel Line2 line3 Plus sur les param tres positionnels au Chapitre 7 Les instructions de conditi
134. ier les noms de fichiers et de r pertoires chaque fois que n cessaire De plus supposez que franky veuille donner ce script a carol alors carol aura faire des modifications par l diteur avant de pouvoir sauvegarder son r pertoire De m me si franky veut se servir du script pour sauvegarder d autres r pertoires Pour une r utilisation ais e transformer tous les fichiers r pertoires nom d utilisateur nom d h te etc en variables Ainsi vous n avez besoin que de modifier la variable une fois et non pas de modifier chaque occurrence de la cha ne correspondante tout au long du script Voici un exemple bin bash Ce script fait une sauvegarde de mon r pertoire racine Modifier les valeurs des variables pour que le script tourne pour vous BACKUPDIR home BACKUPFILES f ranky TARFILE var tmp home_franky tar BZIPFILE var tmp home_franky tar bz2 SERVER bordeaux REMOTEDIR opt backup franky LOGFILE home franky log home backup log cd BACKUPDIR Ceci cr e Le fichier d archive tar cf TARFILE BACKUPFILES gt dev null 2 gt amp 1 D abord supprimer l ancien fichier bzip2 Redirige les erreurs parce que ceci en g n re quand l arct n existe pas Puis cr e un nouveau fichier compress rm BZIPFILE 2 gt dev null bzip2 TARFILE Copie le fichier vers un autre h te nous avons une cl ssh pour effectuer ce travail sans intervent scp BZIPFILE SERVER REMOTEDIR gt dev null 2 gt amp 1 Cr e u
135. ier les options par d faut d une commande Un autre emploi des alias est de permettre la correction des fautes de frappes Le premier mot de chaque commande simple si il n est pas entre guillemets est recherch dans la liste des alias Si il y est ce mot est remplac par le texte correspondant Le nom d alias et le texte correspondant peut contenir tout caract re Shell valide y compris les m tacaract res avec l exception que le nom d alias ne doit pas contenir Le premier mot du texte correspondant est recherch dans les alias mais si ce mot est le m me que celui trait il n est pas remplac une deuxi me fois Ceci signifie qu on peut d clarer Is quivalent Is F par exemple et Bash n essayera pas de remplacer r cursivement l alias trouv Si le dernier caract re de la valeur de l alias est un espace ou une tabulation alors le mot suivant de la commande apr s l alias est aussi recherch dans les alias Les alias ne sont pas remplac s quand le Shell n est pas interactif sauf si l option expand_aliases est activ e par l int gr e shopt shell 5 2 Cr er et supprimer des alias Un alias est cr par l int gr e alias Pour une d claration permanente ajouter la commande alias dans l un de vos scripts d initialisation si vous l entrez seulement sur la ligne de commande il sera connu que durant la session franky gt alias dh df h franky gt dh Filesystem Size Used Avail Use Mounted on dev
136. ieure Si l option f est donn e chaque variable r f re une fonction Shell voir Chapitre 11 Fonctions If a est sp cifi chaque variable r f re un tableau de variables Si aucun argument n est donn ou si p est indiqu une liste de toutes les variables en lecture est affich e Avec l option p le r sultat peut tre r utilis comme entr e Le statut d ex cution est z ro moins qu une option invalide ait t sp cifi e qu une des variables ou fonctions n existe pas ou que f ait t fourni en tant que nom de variable au lieu d un nom de fonction bob in readonly TUX penguinpower bob in TUX Mickeysoft bash TUX readonly variable 2 Variables tableau 2 1 Cr er des tableaux Un tableau est une variable contenant plusieurs valeurs Toute variable peut tre utilis e comme tant un tableau Il n y a pas de limite maximum la taille d un tableau ni de besoin que les l ments soient index s ou assign s de fa on contigu Les tableaux d marrent z ro le premier l ment est donc adress avec le num ro o Une d claration indirecte peut se faire avec la syntaxe suivante de d claration de variable ARRAY INDEXNR value Le INDEXNR est trait comme une expression arithm tique qui doit tre valu comme nombre positif Une d claration explicite d un tableau est faite avec l int gr e declare declare a ARRAYNAME Une d claration avec un num ro d index sera aussi
137. ignes limin s Les sauts de ligne incorpor s ne sont pas limin s mais ils peuvent l avoir t pendant le d coupage en mot franky gt echo date Thu Feb 6 10 06 20 CET 2003 Quand l ancien signal de substitution l apostrophe invers e est utilis le slash invers conserve son sens litt ral sauf si il est suivi de ou La premi re apostrophe invers e non pr c d e d un slash invers termine la commande de substitution Quand la forme COMMANDE est utilis e tous les caract res entre parenth ses font partie de la commande aucun n est trait sp cifiquement Une substitution de commande peut tre incorpor e une autre Pour en incorporer dans la forme apostrophes invers es prot ger l apostrophe la plus interne avec des slashs invers s Si la substitution appara t entre guillemets le d coupage en mots et l expansion de noms de fichiers ne sont pas effectu s sur les r sultats 4 6 L expansion arithm tique L expansion arithm tique permet l valuation d une expression arithm tique et la substitution par le r sultat Le format pour l expansion arithm tique est EXPRESSION L expression est trait e comme si elle tait entre guillemets mais un guillemet l int rieur des parenth ses n est pas trait sp cifiquement Tous les mots de l expression font l objet d expansion de param tre de substitution de commande et d limination d apostrophe Une s
138. imal Pour plus d information sur la commande printf et la fa on dont elle permet de formater les r sultats voir les pages info de Bash 2 R cup rer la saisie utilisateur 2 1 L emploi de la commande int gr e read La commande int gr e read est la contrepartie de echo et printf La syntaxe de la commande read est la suivante read options NAME1 NAME2 NAMEN Une ligne est lue depuis l entr e standard ou depuis le fichier dont le descripteur est fourni en argument l option u option Le premier mot de la ligne est affect au premier nom NAME1 le second mot au second nom et ainsi de suite avec les mots r siduels et leurs s parateurs affect s au dernier nom NAMEN Si il y a moins de mots lus sur le flot d entr e qu il y a de noms les noms r siduels sont valoris s vide Les caract res de la valeur de la variable IFS sont employ s pour d couper l entr e en mots ou jetons voir la Section 4 8 Le d coupage de mots Le caract re slash invers peut tre utilis pour inhiber le sens particulier du caract re lu suivant et pour la continuation de la ligne Si aucun nom n est fourni la ligne lue est affect e la variable REPLY La commande read renvoie un code z ro sauf si un caract re de fin de fichier est rencontr si read d passe son temps imparti ou si un descripteur de fichier invalide est fourni en argument l option u option Les options suivantes sont support es par l int
139. in start start stop stop status status anacron restart stop start condrestart if test x pidof anacron x then stop start fi echo Usage 0 start stop restart condrestart status exit 1 esac Les t ches ex cuter dans chaque cas telles arr ter ou d marrer le d mon sont d finies par des fonctions dont la source est partiellement dans le fichier etc rc d init d functions Voir le Chapitre 11 Fonctions pour plus d explications 4 R sum Dans ce chapitre nous avons appris comment crire des conditions dans un script de sorte que diff rentes t ches puissent tre men es bien selon le succ s ou l chec d une commande L action peut tre d termin e par l emploi de l instruction if Ceci permet d effectuer des comparaisons de cha nes et arithm tique et de tester le statut d ex cution l entr e et les fichiers requis par le script Un simple test if then fi souvent pr c de des commandes dans un script Shell afin d viter la production de r sultat de sorte que le script peut ais ment tre lanc en t che de fond ou via l outil cron Les conditions trop complexes sont g n ralement int gr es une instruction case A la suite d un test positif le script peut explicitement informer le parent par le biais du statutexit o p gt pt p p p P A la suite d un chec tout autre nombre peut tre retourn Bas sur ce code retour le programme parent peut d terminer l action app
140. index week count week modulo count la personne g t e email wholist index R cup rer l adresse email de cette personne echo email Affiche l adresse email Ce script est alors appel dans d autres scripts tel que celui ci qui utilise un document int gr email get tester address sh Trouver a qui envoyer le courriel hostname hostname Le nom de La machine locale Envoyer le courriel la bonne personne mail email s Demo Testing lt lt EOF La personne g t e de la semaine est email Rappel la liste de d monstrations est ici http web example com 8080 DemoSites Ce courriel a t g n r par 0 depuis hostname EOF 3 Op rations sur les variables 3 1 Arithm tique sur les variables Nous avons d j abord la question la Section 4 6 L expansion arithm tique 3 2 Longueur de variable La syntaxe var calcul le nombre de caract res d une variable Si VAR vaut ou cette valeur est remplac e par le nombre de param tres positionnels ou le nombre d l ments dans le tableau en g n ral En voici une d monstration ci dessous bob in echo SHELL bin bash bob in echo SHELL 9 bob in ARRAY one two three bob in echo ARRAY 3 3 3 Transformation de variables 3 3 1 Substitution VAR WORD Si VAR n est pas d fini ou est nul l expansion de WORD est employ e sinon la valeur de VAR est
141. ing me sick This is a line not containing any errors sandy gt 2 4 Trouver et remplacer avec sed Dans cet exemple de fichier nous allons maintenant chercher et remplacer les erreurs au lieu de seulement s lectionner les lignes contenant la cible sandy gt sed s erors errors exemple This is the first line of an example text It is a text with errors Lots of errors So much errors all these erors are making me sick This is a line not containing any errors This is the last line sandy gt Comme vous le constatez ce n est pas exactement l effet d sir en ligne 4 seulement la premi re occurrence de la cha ne a t remplac e et il reste encore un eror Employer la commande g pour indiquer sed qu il doit traiter la ligne enti re plut t que de stopper la premi re occurrence trouv e sandy gt sed s erors errors g exemple This is the first line of an example text It is a text with errors Lots of errors So much errors all these errors are making me sick This is a line not containing any errors This is the last line sandy gt Pour ins rer une cha ne au d but de chaque ligne du fichier par exemple pour citer sandy gt sed s gt exemple gt This is the first line of an example text gt It is a text with erors gt Lots of erors gt So much erors all these erors are making me sick gt This is a line not containing any errors gt This is the
142. ing updated packages Downloading needed headers Resolving dependencies Dependencies resolved I will do the following install tuxracer 0 61 26 i386 Is this ok y N EnterDownloading Packages Running test transaction Test transaction complete Success tuxracer 100 done 1 1 Installed tuxracer 0 61 26 1386 Transaction s Complete 3 R sum Dans ce chapitre nous avons appris comment afficher des commentaires et comment solliciter une saisie de la part de l utilisateur Ce qui est effectu habituellement par la combinaison de echo read Nous avons aussi abord comment les fichiers peuvent tre employ s en entr e et en sortie par le biais des descripteurs de fichiers et la redirection et comment cela peut tre combin avec la saisie utilisateur Nous avons insist sur l importance des messages destination des utilisateurs dans vos scripts Comme d habitude quand d autres se servent de vos scripts mieux faut donner trop d informations que pas assez Le document int gr est un type de construction Shell qui permet la cr ation de liste contenant des choix pour les utilisateurs Cette construction peut aussi tre employ e pour ex cuter d autres sortes de t ches interactives en t che de fond sans intervention 4 Exercices Ces exercices sont des applications pratiques des constructions abord es dans ce chapitre Quand vous crivez un script il est pr f rable de tester dans un r pertoire qui ne contienne p
143. ion de r seau sort Tri les lignes d un fichier texte ssh Shell s curis ssh keygen G n ration de cl d authentification stty Modifie et affiche le param trage des lignes de terminal su Change d utilisateur tac Concat ne et affiche des fichiers de la fin vers le d but tail Affiche la derni re partie d un fichier talk Envoie un message un usager tar Outil d archivage tcsh Ouvre un Shell Turbo C telnet Interface utilisateur au protocole TELNET peu s r tex Formatage de texte et configuration de type time Chronom tre une commande simple ou affiche l utilisation des ressources tin Programme de lecture de nouvelles top Affiche les processus les plus gourmands en CPU touch Modifie les propri t s d heure et de date d un fichier traceroute Affiche la route que les paquets prennent jusqu un h te r seau tripwire Un contr leur d int grit de fichiers sur les syst mes UNIX twm Gestionnaire de tabulations du syst me de gestion de fen tre X u ulimit Contr le les ressources umask D termine le masque pour la cr ation de fichier par l utilisateur umount D monte un syst me de fichiers uncompress D compresse des fichiers uniq Elimine les lignes en double dans un fichier tri update D mon du noyau qui lib re les tampons orphelins sur disques uptime Affiche la dur e depuis laquelle le syst me est en route et sa charge moyenne userdel Suppri
144. ion et remercie l administrateur d avoir mis Texte a filtrer Ce texte est a afficher a la fin de chaque travail d affichage Le descripteur 5 L emploi de ce descripteur de fichier peut tre cause de soucis voir the Advanced Bash Scripting Guide chapitre 16 Il vous est s rieusement recommand de ne pas l employer 2 4 2 2 Read dans un script Ce qui suit est un exemple qui montre comment vous pouvez permuter l entr e depuis un fichier sur l entr e de la ligne de commande et vice versa michel testdir gt cat sysnotes sh bin bash Ce script fait un index des fichiers de configuration importants les sauvegarde tous dans un fichier et autorise l ajout de commentaires a chaque fichier CONFIG var tmp sysconfig out rm CONFIG 2 gt dev null echo Le r sultat sera m moris dans CONFIG Cr e fd 7 avec la cible de fd 0 save stdin value exec 7 lt amp 0 update fd 0 to target file etc passwd exec lt etc passwd Read the first line of etc passwd read rootpasswd echo Sauvegarde des info de root echo Les infos du compte root gt gt CONFIG echo rootpasswd gt gt CONFIG Modifie fd 0 pour cibler fd 7 old fd 0 target supprime fd 7 exec 0 lt amp 7 7 lt amp echo n Entrez un commentaire ou ENTER sans commentaire read comment echo comment gt gt CONFIG echo M morise les infos de l h te D abord pr parer un fichier h te s
145. ir atteint la fin Cette difficult est surmont e en utilisant tac lequel inverse l ordre des lignes dans un fichier La commande basename Plut t que d employer sed pour remplacer le suffixe html par php il serait plus propre d employer la commande basename Voir les pages man pour plus de d tails Caract res sp ciaux Vous aurez des soucis si la liste est transform e en noms de fichiers contenant des espaces et autres caract res irr guliers Une construction plus appropri e pour obtenir la liste serait d utiliser la fonction globale du Shell comme ceci for i in PATHNAME do commands done 2 La boucle while 2 1 Qu est ce que c est La structure while permet une ex cution r p titive d une liste de commandes tant que la commande qui contr le le while s ex cute avec succ s code retour gal z ro La syntaxe est while CONTROL COMMAND do CONSEQUENT COMMANDS done CONTROL COMMAND peut tre toute s commande s qui peut s achever avec un statut de succes ou d chec Le CONSEQUENT COMMANDS peut tre tout programme script ou bloc Shell D s que CONTROL COMMAND choue la boucle est arr t e Dans un script la commande suivant l instruction done est ex cut e Le statut retourn est le statut d ex cution de la derni re commande de CONSEQUENT COMMANDS ou z ro si aucune n est ex cut e 2 2 Exemples 2 2 1 Exemple simple d utilisation de while Voici un exemple pour les impatient
146. ir gt date Tue Jan 14 20 37 55 CET 2003 anny testdir gt testleap sh Ann e non bissextile 2 4 Op rations bool ennes Le script ci dessus peut tre abr g avec les op rateurs bool ens AND amp amp et OR ll Figure 7 2 Exemple employant les op rateurs bool ens lad leaptest sh testdir GVIM Ax File Edit Tools Syntax Buffers Window Help ARBRES oge XDA RARE SEA TQR A bin bash This script will test if we re in a leap year or not year date 7 if year 400 0 3 year 4 O amp amp Syear 100 O then echo This is a leap year Don t forget to charge the extra day else echo This is not a leap year fi KIM INSERT 10 34 All Nous employons le double crochet pour tester les expressions arithm tiques voir la Section 4 6 L expansion arithm tique Ceci est quivalent l instruction let Ici vous allez tre bloqu si vous employez les crochets si vous essayez quelque chose de la sorte year 400 parce que ici les crochets ne repr sentent pas une vraie commande mais eux m mes Parmi d autres diteurs gvim est l un de ceux qui supporte les codes de couleur selon le format de fichier de tel diteurs sont pratiques pour pister les erreurs d criture 2 5 Emploi de l instruction exit et du if Nous avons d j rencontr l instruction exit dans la Section 2 1 3 Tester le nombre de
147. ise une valeur Cela peut tre un nom un nombre ou une valeur sp ciale Pour les besoins du Shell une variable est un param tre qui m morise un nom Une variable a une valeur et z ro ou plus attributs Les variables sont cr es avec l int gr e declare Si aucune valeur ne lui est assign e une variable prend la valeur nulle Une variable peut tre invalid e seulement avec l int gr e unset L assignation de variables est trait e la Section 2 Variables l utilisation pouss e de variables au Chapitre 10 Un peu plus sur les variables 4 1 5 Le processus d expansion de Shell L expansion par le Shell est effectu e apr s que chaque ligne de commande ait t d coup e en jetons ou morceaux Voici les op rations d expansion e L expansion d accolades e L expansion du tilde e L expansion de param tres et de variables La substitution de commande e L expansion arithm tique Le d coupage de mots e L expansion de nom de fichiers Nous traiterons ces types d expansion la Section 4 Le processus d expansion de Shell 4 1 6 Redirections Avant qu une commande soit ex cut e ses flux d entr e et de sortie peuvent tre redirig s en employant un symbole sp cial interpr t par le Shell La redirection peut aussi tre employ e pour ouvrir et fermer des fichiers dans l environnement d ex cution du Shell 4 1 7 L ex cution de commandes A l ex cution d une commande les mots que l analyse
148. ithm tique Expressions employ es avec if syntax L expansion arithm tique arithmetic expression testing Op rations bool ennes arrays adding members Cr er des tableaux attributes Cr er des tableaux declaration Utiliser l int gr e declare Cr er des tableaux dereferencing Invoquer les variables d un tableau examples Exemples de tableaux number of elements Longueur de variable remove patterns Suppression de sous cha nes unset Supprimer des variables tableau variables Affectation g n rale de valeur awk BEGIN Patrons particuliers definition Qu est ce que gawk example Plus d exemples example fields Afficher les champs s lectionn s field formatting Formater les champs formatting characters Formater les champs formatting example Formater les champs input field separator Le s parateur de champs en entr e input interpretation Afficher les champs s lectionn s number of records Le nombre d enregistrements output field separator Les s parateurs de champs de r sultat output record separator Le s parateur d enregistrement de r sultat printf program Le programme printf print program Afficher les champs s lectionn s program on the command line Commandes Gawk program script Commandes Gawk regexp example La commande print et les expressions r guli res regular expressions La commande print et les expressions r guli res script example Les scripts Gawk scripts Les scripts Gawk user defined variables
149. juste apr s le slash invers cela marque la continuation de la ligne quand elle est plus longue que la largeur du terminal le slash invers est t du flot entr et donc en fait ignor franky gt date 20021226 franky gt echo date 20021226 franky gt echo date date Dans cet exemple la variable date est d finie avec une valeur Le premier echo affiche la valeur de la variable mais dans le second le signe est prot g 3 3 Les apostrophes Les apostrophes sont utilis es pour pr server la valeur litt rale des caract res enferm s entre apostrophes Une apostrophe ne peut pas tre enferm e entre apostrophes m me si elle est pr c d e par un slash invers e Continuons avec l exemple pr c dent franky gt echo date date 3 4 Les guillemets Avec les guillemets la valeur litt rale de tous les caract res est pr serv e sauf pour le les apostrophes invers es et le slash invers Le et conservent leur sens sp cial l int rieur de guillemets NN Le slash invers conserve son effet seulement quand il est suivi de et saut de ligne Au sein de guillemets les sont limin s du flot entr quand il est suivi d un de ces caract res Le qui pr c de les caract res sans sens sp cial est laiss en l tat pour tre interpr t par le Shell Un guillemet peut tre prot g l int rieur de guillemets en le faisant pr c der par frank
150. l Le Shell restreint G gawk awk Qu est ce que gawk input analysis La syntaxe Shell input field separator word splitting Le d coupage de mots interactive shell behavior Le comportement d un Shell interactif invocation interactive login shell Invoqu pour tre le Shell d interaction ou avec l option login interactive non login shell Invoqu comme Shell interactif sans tape de connexion invoked as sh Invoqu avec la commande sh non interactive Invoqu non interactivement POSIX mode Mode POSIX remote invocation Invoqu a distance UID lt gt EUID Invoqu alors que UID est diff rent de EUID O options changing options Changer les options display all options Afficher les options ignoreeof Le comportement d un Shell interactif nocaseglob Expansion de noms de fichier noclobber Changer les options nullglob Expansion de noms de fichier restricted Le Shell restreint P positional parameters example Param tres sp ciaux printenv example Les variables Globales process substitution syntax La substitution de processus Q quoting characters ANSI C quoting Codage ANSI C double quotes Les guillemets escape characters Le caract re Echap escape locale Particularit s single quotes Les apostrophes R restricted shell behavior Le Shell restreint S scripts comments Ajout de commentaires considerations Caract ristiques d un bon script creation crire et nommer debugging
151. l C c est mieux d utiliser kill 9 sur cet ID de processus maud gt ps ef 1 9 grep stuck_process maud 5607 2214 20 05 pts 5 00 00 02 stuck process maud gt kill 9 5607 maud gt ps ef 1 97 grep stuck_process maud 5614 214 0 20 15 pts 5 00 00 00 grep stuck_process 1 Killed stuck_process Quand un processus d marre plusieurs instances killall peut tre plus facile Elle prend la m me option que la commande kill mais s applique toutes les instances d un processus donn Tester cette commande avant de l employer dans un environnement de production parce qu elle pourrait ne pas fonctionner comme attendu sur certains UNIX commerciaux 2 Pi ger les signaux 2 1 G n ralit Il peut y avoir des situations ou vous ne souhaitez pas que les usagers de vos scripts quittent abruptement par une s quence de touches du clavier par exemple parce qu une entr e est en attente ou une purge est faire L instruction trap trappe ces s quences et peut tre programm e pour ex cuter une liste de commandes la r cup ration de ces signaux La syntaxe de l instruction trap est directe trap COMMANDS SIGNALS Ceci indique la commande trap de r cup rer les SIGNAUX list s qui peuvent tre des noms de signaux avec ou sans le pr fixe SIG ou des num ros de signaux Si un signal est o ou EXIT les COMMANDES sont ex cut es quand le Shell se finit Si l un des signaux est DEBUG la liste des COMMANDES est ex c
152. la variable cette variable est alors interpr t e et utilis e dans la suite de la substitution plut t que la valeur de PARAMETRE lui m me Ceci est connu sous le nom d expansion indirecte Vous tes certainement familier avec l expansion de param tre directe parce qu elle est fr quente m me dans les cas les plus simples tel que celui ci dessus ou le suivant franky gt echo SHELL bin bash Voici un exemple d expansion indirecte franky gt echo N NNTPPORT NNTPSERVER NPX_PLUGIN PATH Notez que cela ne donne pas la m me chose que echo Nx La construction suivante permet la cr ation du nom de variable si il n existe pas VAR value Exemple franky gt echo FRANKY franky gt echo FRANKY Franky Franky Cependant les param tres sp ciaux dont les param tres positionnels ne doivent pas tre affect s par ce biais Nous approfondirons l utilisation de l accolade dans le traitement des variables au Chapitre 10 Un peu plus sur les variables Les pages info de Bash fournissent aussi d autres informations 4 5 La substitution de commande La substitution de commande permet de remplacer la commande elle m me par son r sultat La substitution de commande survient quand une commande est ench ss e ainsi commande ou ainsi avec les apostrophes invers es commande Bash effectue l expansion en ex cutant COMMANDE et en la rempla ant par son r sultat avec tous les sauts de l
153. le s arr te Parce que la structure de boucle est consid r e comme tant une structure de commande tel que while TEST COMMAND do CONSEQUENT COMMANDS done la redirection doit appara tre apr s l instruction done afin de respecter la syntaxe command lt file Ce genre de redirection convient aux autres types de boucles 4 2 Redirection des sorties Dans l exemple suivant le r sultat de la commande find est utilis comme entr e de la commande read afin de contr ler une boucle while carol octarine testdir cat archiveoldstuff sh bin bash Ce script cr e un sous r pertoire dans le r pertoire courant o sont gard s les fichiers supprim s Cela pourrait tre adapt a cron avec modifications pour tre ex cut chaque semaine ou mois ARCHIVENR date Y m d DESTDIR PWD archive ARCHIVENR mkdir DESTDIR avec guillemets pour r cup rer les noms de fichiers ayant des espaces avec read d pour la suite fool proof usage find PWD type f a mtime 5 while read d 000 file do gzip file mv file gz DESTDIR echo file archived done Les fichiers sont compress s avant d tre d plac s dans le r pertoire d archive 5 Break et continue 5 1 L int gr e break L instruction break est employ e pour quitter la boucle en cours avant sa fin normale Ceci peut tre n cessaire quand vous ne savez pas l avance combien de fois la boucle devra s ex cuter pa
154. les alias M morise o se situe la commande Annule la m morisation Liste les commandes pass es Relance la commande pr c dente Relance la commande la plus r cemment pass e qui commence par str Remplace x par y dans la commande la plus r cemment pass e sh Bash ksh csh Signification Action commengant par cmd puis ex cute if i eq5 if i eq5 if i 5 if i 5 Echantillon de tests de conditions fi fi fi endif Marque la fin de l instruction if ulimit ulimit ulimit limit D clare une limite de ressource pwd pwd pwd dirs Affiche le r pertoire courant read read read lt Lecture depuis l entr e trap 2 trap 2 trap 2 onintr A pour effet d ignorer les interruptions unalias unalias unalias D truit les alias until until until Begin until loop while do while do while do while Begin while loop Bourne Again SHell a bien d autres possibilit s non voqu es ici Ce tableau donne un apercu de comment ce Shell int gre toutes les bonnes id es des autres Shell il n y a pas de blanc dans la colonne bash Plus d informations sur les possibilit s propres 4 Bash peuvent tre trouv es dans les pages d info Bash dans la section Bash Features Plus d informations Vous devriez au moins lire un manuel m me si c est celui de votre Shell Le choix pourrait tre info bash bash tant le Shell GNU et le plus facile pour le d butant Imprimez le et emportez le la mai
155. lignes du script une par une Les commandes de chaque ligne sont lues interpr t es et ex cut es comme si elles avaient t entr es au clavier Tandis que le sous Shell op re sur chaque ligne du script le Shell parent attend que le processus fils ait fini Quand il n y a plus de ligne lire dans le script le sous Shell se termine Le Shell parent s active et affiche l invite de nouveau 4 Construction de blocs 4 1 Construction de blocs Shell 4 1 1 La syntaxe Shell Si la saisie n est pas comment e le Shell la lit et la divise en mots et op rateurs selon les r gles d analyse qui d terminent la signification de chaque caract re saisi Alors ces mots et op rateurs sont transform s en commandes et autres constructions lesquels retournent un statut d ex cution qui peut tre exploit Le sch ma fork and exec ci dessus est appliqu seulement apr s que le Shell ait analys la saisie selon le processus suivant Le Shell lit le texte en entr e dans un fichier ou une cha ne de caract re ou depuis le p riph rique de saisie Le texte est d coup en mots et op rateurs selon les r gles de syntaxe voir Chapitre 3 L environnement du Bash Ces l ments sont s par s par des m tacaract res Les alias sont remplac s par leur quivalent Le Shell parses analyse et transforme les l ments en commandes simples ou compos es Bash proc de diverses expansions d l ments les d composant
156. ll 1 1 Les fichiers de configuration qui agissent sur tout le syst me 1 2 Les fichiers de configuration utilisateur 1 3 Modification des fichiers de configuration du Shell 2 Variables 2 1 Types de variables 2 2 Cr er des variables 2 3 Exporter les variables 2 4 Variables r serv es 2 5 Param tres sp ciaux 2 6 Script finalit s multiples gr ce aux variables 3 Echappement et protection de caract res 3 1 Pourquoi prot ger ou chapper un caract re 3 2 Le caract re Echap escape 3 3 Les apostrophes 3 4 Les guillemets 3 5 Codage ANSI C 3 6 Particularit s 4 Le processus d expansion de Shell 4 1 G n ralit 4 2 L expansion d accolades 4 3 L expansion du tilde 4 4 Param tre Shell et expansion de variable 4 5 La substitution de commande 4 6 L expansion arithm tique 4 7 La substitution de processus 4 8 Le d coupage de mots 4 9 Expansion de noms de fichier 5 Alias 5 1 Que sont les alias 5 2 Cr er et supprimer des alias 6 Plus d options Bash 6 1 Afficher les options 6 2 Changer les options 7 R sum 8 Exercices R sum Dans ce chapitre nous traiterons des diverses fa ons de modifier l environnement du Bash e En modifiant les fichiers d initialisation du Shell En utilisant des variables En utilisant divers modes d chappement e En effectuant des calculs arithm tiques En d clarant des alias En employant l expansion et la substitution 1
157. logique 5 5 Un exemple Bash script mysystem sh 5 6 Exemple init script NdT d initialisation 6 R sum 7 Exercices 2 Ecrire et corriger des scripts 1 Cr er et lancer un script 1 1 crire et nommer 1 2 scripti sh 1 3 Ex cuter le script 2 Les bases du script 2 1 Quel Shell ex cutera le script 2 2 Ajout de commentaires 3 D bugger NAT corriger les scripts Bash 3 1 D bugger le script globalement 3 2 D bugger qu une partie du script 4 R sum 5 Exercices 3 L environnement du Bash 1 Les fichiers d initialisation du Shell 1 1 Les fichiers de configuration qui agissent sur tout le syst me 1 2 Les fichiers de configuration utilisateur 1 3 Modification des fichiers de configuration du Shell 2 Variables 2 1 Types de variables 2 2 Cr er des variables 2 3 Exporter les variables 2 4 Variables r serv es 2 5 Param tres sp ciaux 2 6 Script finalit s multiples gr ce aux variables 3 Echappement et protection de caract res 3 1 Pourquoi prot ger ou chapper un caract re 3 2 Le caract re Echap escape 3 3 Les apostrophes 3 4 Les guillemets 3 5 Codage ANSI C 3 6 Particularit s 4 Le processus d expansion de Shell 4 1 G n ralit 4 2 L expansion d accolades 4 3 L expansion du tilde 4 4 Param tre Shell et expansion de variable 4 5 La substitution de commande 4 6 L expansion arithm tique 4 7 La substitution de processus 4 8 Le d coupage de mots 4 9 Expansion de noms
158. lternativement vous pouvez utiliser des scripts pour automatiser des t ches via l outil cron Un autre usage des scripts est celui fait par la proc dure de d marrage et d arr t d UNIX o les op rations des services et d mons sont d finies dans des scripts init Pour cr er un script Shell ouvrez un nouveau fichier avec l diteur N importe quel diteur fera l affaire vim emacs gedit dtpad et cetera sont tous valides Vous pouvez songer utiliser un diteur sophistiqu comme vim ou emacs parce qu ils peuvent tre configur s pour reconna tre la syntaxe Shell et Bash et donc peuvent tre d une grande aide en vitant ces erreurs que les d butants font tel que oublier un crochet ou un point virgule Le vid o inverse dans vim Pour activer le vid o inverse dans vim passer la commande set syntax enable Vous pouvez ajouter ce param tre votre fichier vimrc pour rendre permanent cette configuration Entrez des commandes UNIX dans ce nouveau fichier comme vous le feriez sur la ligne de commande Ainsi que nous l avons vu dans le chapitre pr c dent voir Section 3 L ex cution de commandes les commandes peuvent tre des fonctions Shell des commandes int gr es des commandes UNIX et le nom d un autre script Donnez votre script un nom significatif qui donne une id e de ce qu il fait Assurez vous que ce nom ne soit pas en conflit avec une commande existante Afin d viter des confusions le
159. mande peut tre en th orie de taille illimit e celle du moniteur ne l est pas et encore moins celle du papier L usage du slash invers permet aussi le copier coller de la ligne dans une fen tre de terminal L option h de Is permet d obtenir un format lisible de la taille des gros fichiers L affichage d une longue liste avec la somme des blocs du r pertoire indiqu e est produite quand un r pertoire est le param tre Cette ligne est inutile pour nous donc nous avons mis un ast risque Nous avons aussi ajout l option d pour la m me raison dans le cas o l expansion de l ast risque donne un r pertoire Le slash invers dans cet exemple marque la continuation de la ligne Voir Section 3 2 Le caract re Echap escape On peut prendre en compte autant de colonnes que l on veut et m me bouleverser l ordre Dans l exemple ci dessous on en trouve la d monstration qui affiche les partitions les plus critiques kelly octarine gt df h sort rnk 5 head 3 awk print Partition 6 t 5 full Partition var 86 full Partition usr 85 full Partition home 70 full kelly octarine gt Le tableau ci dessous donne un aper u des caract res sp ciaux de formatage Tableau 6 1 Caract res de formatage pour gawk S quence sens a sonnerie n Saut de ligne t Tabulation L apostrophe le signe Dollar et autres m tacaract res devraient tre prot g s avec un slash invers
160. mandes int gr es sont n cessaires pour implanter des fonctionnalit s impossibles ou difficiles mettre en oeuvre par des outils externes Bash poss de 3 types de commandes int gr es e Les int gr es Bourne break cd continue eval exec exit export getopts hash pwd readonly return set shift test times trap umask et unset Les int gr es Bash alias bind builtin command declare echo enable help let local logout printf read shopt type typeset ulimit et unalias Les int gr es speciales Quand Bash est ex cut en mode POSIX les commandes sp ciales diff rent des autres selon 3 aspects 1 Les commandes sp ciales sont rencontr es avant les fonctions Shell pendant la localisation de la commande 2 Si une commande sp ciale renvoie un statut en erreur un Shell non interactif quitte 3 Les variables affect es avant la commande existent toujours dans l environnement Shell apr s que la commande se soit termin e Les commandes sp ciales POSIX sont break continue eval exec exit export readonly return set shift trap et unset La plupart de ces int gr es seront abord es dans les chapitres suivants Pour les commandes qui ne le seront pas se r f rer aux pages Info 3 3 Ex cuter un programme dans un script Quand le programme en ex cution est un script Shell Bash cr era un nouveau processus Bash en activant un fork Ce sous Shell lit les
161. marrage Le contr le de travail est actif par d faut Les invites sont tablies PS2 est d clar pour des commandes multi lignes il est souvent d clar gt C est aussi l invite que l on obtient quand le Shell trouve que la commande entr e n est pas finie par exemple si vous oubliez des guillemets une structure de commande non finie etc Les commandes sont par d faut lues depuis la ligne de commande en utilisant readline Bash interpr te l option Shell ignoreeof plut t que de sortir imm diatement la r ception de EOF Fin de Fichier e L historique des commandes avec leur expansion est activ par d faut L historique est enregistr dans le fichier d sign par HISTFILE quand le Shell est quitt Par defaut HISTFILE pointe vers bash_ history e L expansion d alias est actif En l absence de trap le signal SIGTERM est ignor En l absence de trap SIGINT est captur et exploit Donc les touches Ctrl C par exemple ne feront pas quitter votre Shell interactif Le signal SIGHUP est configur pour tre envoy tous les travaux quand Bash se termine avec l option huponexit option Les commandes sont ex cut es la lecture Bash v rifie r guli rement le courrier lectronique Bash peut tre configur pour quitter quand il trouve des variables non d clar es En mode interactif ce comportement est d sactiv Quand les commandes int gr e
162. me tel que i Renvoie l identifiant du process du Shell Renvoie l identifiant du process de la commande la plus r cemment ex cut e en t che de fond asynchrone Renvoie le nom du Shell ou du script Shell actif Au d marrage du Shell contient le nom complet du fichier ex cutable actif script ou Shell tel que pass dans la liste d arguments Ensuite renvoie le dernier argument de la commande pr c dente apr s expansion Et aussi valoris avant chaque ex cution de commande avec la valeur du chemin complet de cette commande puis export dans l environnement d ex cution A la v rification de pr sence de mails ce param tre contient le nom du fichier de mails L impl mentation de a toujours t un probl me et aurait d tre remplac pratiquement par le comportement de Dans presque tous les cas quand le programmeur utilise il veut dire peut tre la cause de bugs et m me de trou de s curit dans votre programme Les param tres positionnels sont les mots qui suivent le nom d un script Shell Ils d finissent les variables 1 2 3 etc Autant que n cessaire ces variables sont ajout es dans un tableau interne m morise le nombre de param tres comme d montr dans ce simple script bin bash positional sh Ce script lit 3 param tres positionnels et les affiche POSPAR1 1 POSPAR2 2 POSPAR3 3 echo 1 est le premier par
163. me un compte utilisateur et ses fichiers associ s V vi m Lance l diteur vi am lior vimtutor Le tutoriel Vim vmstat Affiche des statistiques d utilisation de la m moire virtuelle Affiche qui est connect et ce qu ils font wall Envoie un message tous les terminaux we Affiche le nombre d octets mots et lignes d un fichier which Indique le chemin complet des commandes Shell who Affiche qui est connect who am i Affiche l identifiant utilisateur r el whois Interroge une base de donn e des utilisateurs avec surnom ou pas write Envoie un message un autre utilisateur X xauth Outil de gestion des fichiers X xcdroast Interface graphique de cdrecord xclock Horloge analogique num rique pour X xconsole G re les messages de la console syst me avec X xdm Gestionnaire d affichage X qui admet XDMCP le s lectionneur d h te xdvi Visionneur de DVI xfs Serveur de police X xhost Programme de contr le d acc s au serveur pour X xinetd Le d mon de services INTERNET tendu xload Affichage de la charge moyenne du syst me pour X xlsfonts Afficheur de la liste des polices du syst me pour X xmms Diffuseur audio pour X xpdf Un visionneur de PDF xterm Emulateur de terminal pour X zcat Comprime ou extrait des fichiers zgrep Cherche dans d ventuels fichiers compress s une expression r guli re zmore Filtre pour afficher du texte compress In
164. ment d ex cution propre e Si l ex cution choue parce que le fichier n est pas ex cutable et qu il n est pas un r pertoire il est alors consid r comme tant un script Shell e Si la commande n a pas t lanc e de fa on asynchrone le Shell attend que la commande se termine et r cup re son statut d ex cution 4 1 8 Les scripts Shell Quand un fichier contenant des commandes Shell est utilis comme le premier argument n tant pas une option l invocation de Bash sans l option c ou l option s un Shell non interactif est lanc Ce Shell cherche d abord le fichier de script dans le r pertoire en cours puis cherche dans ceux de PATH si le fichier ne peut pas y tre trouv 5 Ecrire de bons scripts 5 1 Caract ristiques d un bon script Ce guide traite principalement du dernier bloc de construction Shell les scripts Quelques considerations g n rales avant de continuer 1 Un script devrait s ex cuter sans erreurs 2 Il devrait accomplir la t che pour laquelle il a t con u 3 La logique du programme est clairement d finie et apparente 4 Un script n ex cute pas des instructions inutiles 5 Les scripts devraient tre r utilisables 5 2 Structure La structure d un script est tr s flexible M me si Bash permet beaucoup de libert vous devez mettre en oeuvre une logique rigoureuse un contr le des donn es une efficacit qui permet l utilisateur qui ex cute le script de le faire
165. michel michel 64 Jan 24 11 07 0 gt var spool at 0000c010959eb deleted L wx 1 michel michel 64 Jan 24 11 07 1 gt var tmp fdtest at L wx 1 michel michel 64 Jan 24 11 07 2 gt var spool at spool a0000c010959eb Lr x 1 michel michel 64 Jan 24 11 07 3 gt proc 21949 fd Et un avec cron michel gt crontab l NE PAS EDITER CE FICHIER diter le mod le et le r installer tmp crontab 21968 installed on Fri Jan 24 11 30 41 2003 Cron version Id chap8 xml v 1 9 2006 09 28 09 42 45 tille Exp 32 11 ls l proc self fd gt var tmp fdtest cron michel gt cat var tmp fdtest cron total 0 Ur x 1 michel michel 64 Jan 24 11 32 gt pipe 124440 L wx 1 michel michel 64 Jan 24 11 32 1 gt var tmp fdtest cron L wx 1 michel michel 64 Jan 24 11 32 2 gt pipe 124441 Ur x 1 michel michel 64 Jan 24 11 32 3 gt proc 21974 fd 2 3 2 Redirection des erreurs Dans l exemple pr c dent il appara t clairement que vous pouvez fournir les fichiers d entr e et de sortie un script voir Section 2 4 Fichier d entr e et fichier de sortie pour plus de d tails mais certains oublient de rediriger les erreurs un affichage dont peut d pendre la suite Aussi si vous tes chanceux les erreurs vous seront adress es par mail et d ventuels dysfonctionnements pourront vous appara tre Si vous n tes pas chanceux les erreurs feront planter votre script et
166. mmande anny gt if o noclobber then echo echo Vos fichiers sont prot g s contre une 1 Vos fichiers sont prot g s contre une r criture anny gt Cependant si vous employez les tests de conditions qui d pendent de l environnement vous r sultats variables alors que vous ex cutez la m me commande dans un script parce que le sc Shell dans lequel les variables et options attendues pourraient ne pas tre d finies automatic 1 2 Applications simples de if 1 2 1 Tester le statut d ex cution La variable stocke le statut d ex cution de la commande pr c demment ex cut e le processus le plus r cemment achev au premier plan L exemple suivant montre un simple test anny gt if eq 0 More input gt More input gt then echo That was a good job fi That was a good job anny gt L exemple suivant d montre que TEST COMMANDS pourrait tre toute commande UNIX qui retourne un statut et le if son tour renvoie un statut z ro anny gt if More input gt grep USER etc passwd then echo votre compte utilisateur ne se trouve pas sur le syst me local fi votre compte utilisateur ne se trouve pas sur le syst me local anny gt echo 0 anny gt Le m me r sultat peut tre obtenu comme ceci anny gt grep anny gt if USER etc passwd ne then echo pas un compte local fi pas un compte local anny gt 1 2 2 Comp
167. mment les descripteurs r serv s pointent sur des entit s concr tes michel gt Ls L dev std Lrwxrwxrwx 1 root root 17 Oct 2 07 46 dev stderr gt proc self fd 2 Lrwxrwxrwx 1 root root 17 Oct 2 07 46 dev stdin gt proc self fd 0 Lrwxrwxrwx 1 root root 17 Oct 2 07 46 dev stdout gt proc self fd 1 michel gt ls l proc self fd 0 2 Lrwx 1 michel michel 64 Jan 23 12 11 proc self fd 0 gt dev pts 6 Lrwx 1 michel michel 64 Jan 23 12 11 proc self fd 1 gt dev pts 6 Lrwx 1 michel michel 64 Jan 23 12 11 proc self fd 2 gt dev pts 6 Notez que chaque process a sa propre vue des fichiers sous proc self puisque c est un lien symbolique vers proc lt process_ID gt Vous pouvez consulter info MAKEDEV et info proc pour plus de d tails sur le sous r pertoire proc et la fa on dont votre syst me g re les descripteurs standards de chaque processus lanc Quand vous ex cutez n importe quelle commande les tapes suivantes sont d roul es dans l ordre e Si la sortie standard de la commande pr c dente a t dirig e sur l entr e standard de la commande en cours alors proc lt current_process_ID gt fd 0 est modifi pour cibler le m me tube anonyme que proc lt previous process _ID fd 1 e Si la sortie standard de la commande en cours a t dirig e sur l entr e standard de la commande suivre alors proc lt current_process_ID gt fd 1 est modifi pour cibler un autre tub
168. mparaison de cha nes lors de la recherche de motifs et l expansion des noms de fichiers Cette variable d termine l interpr tation des caract res et le comportement des classes de caract res NdT ex alpha lors de l expansion des noms de fichiers et de la recherche de patrons Cette variable d termine le particularisme utilis pour traduire les cha nes entre guillemets pr c d s par un Cette variable d termine la cat gorie des particularismes employ s pour formater les nombres Le num ro de la ligne en train d tre trait e dans le script ou la fonction Shell Utilis par l int gr e select pour d terminer la longueur de colonne lors de l affichage de listes de s lection Une cha ne qui d crit compl tement le type de syst me sur lequel Bash tourne dans le format standard GNU CPU COMPANY SYSTEM Intervalle de temps en secondes entre 2 v rifications de pr sence de mail dans le fichier sp cifi par MAILPATH ou MAIL Contient le nom du r pertoire pr c dent acc d par l int gr e cd Nom de variable OPTERR OSTYPE PIPESTATUS POSIXLY CORRECT PPID PROMPT COMMAND PS3 PS4 PWD RANDOM REPLY SECONDS SHELLOPTS SHLVL TIMEFORMAT TMOUT UID D finition Si d fini 1 Bash affiche les messages d erreur g n r s par l int gr e getopts Une cha ne d crivant le syst me d exploitation sur lequel Bash tourne Un tableau contenant une liste d
169. mv ORIG NEW echo nouveau nom pour ORIG est NEW done Ce script a au moins un inconv nient il crase les fichiers existants L option noclobber de Bash est seulement utile quand intervient des redirections L option b de la commande mv offre plus de s curit mais seulement dans le cas de r criture accidentelle comme le montre ce test carol octarine test rm carol octarine test touch test Test TEST caroleoctarine test bash x tolower sh Ss LIST test Test TEST test upper continue Test upper ORIG Test echo Test tr A Z a z NEW test mv b Test test echo nouveau nom pour Test est test new name for Test is test TEST upper ORIG TEST echo TEST tr A Z a z NEW test mv b TEST test echo nouveau nom pour TEST est test nouveau nom pour TEST est test carol octarine test ls a test test tr fait parti du paquet textutils il peut effectuer toute sorte de transformation de caract re 6 Faire des menus avec l int gr e select 6 1 G n ralit 6 1 1 Emploi de select La structure select permet la g n ration facile de menus La syntaxe est assez similaire a celle de la boucle for select WORD in LIST do RESPECTIVE COMMANDS done LIST est interpr t ce qui g n re une liste d l ments L expansion est affich e sur le standard d erreurs chaque l ment est
170. n marqueur temporel dans un fichier journal date gt LOGFILE echo backup succeeded gt LOGFILE R pertoires volumineux et faible bande passante Tout le monde peut comprendre l exemple ci dessus en utilisant un r pertoire r duit et un h te de son sous r seau En fonction de votre bande passante de la taille du r pertoire et de l endroit du serveur distant cela peut prendre un temps terriblement long de faire la sauvegarde Pour les r pertoires les plus volumineux et une bande passante faible employez rsync pour garder les r pertoires synchronis s entre les 2 machines 3 Echappement et protection de caract res 3 1 Pourquoi prot ger ou chapper un caract re Certaines touches NdT s quence de caract res ont un sens sp cial dans un certain contexte La protection ou encore citation est utilis e pour s chapper du sens sp cial de ces caract res ou mots en d autres termes l chappement peut d sactiver le comportement sp cial de ces caract res il peut emp cher les mots r serv s d tre reconnus comme tel et il peut d sactiver l expansion de param tres 3 2 Le caract re Echap escape Le caract re Echap sert inhiber la signification sp ciale d un caract re unique Le slash invers sans guillemets est utilis comme caract re Echap dans Bash Il pr serve le sens litt ral du caract re le suivant l exception de saut de ligne Si un caract re saut de ligne appara t
171. n signal pour lequel un pi ge a t d fini fera que l int gr e wait redonnera la main imm diatement avec un statut d ex cution sup rieur 128 imm diatement apr s quoi le pi ge est ex cut 2 3 Plus d exemples 2 3 1 D tecter quand une variable est utilis e Quand vous d buggez de longs scripts vous pouvez vouloir donner une variable l attribut trace et trapper les messages DEBUG pour cette variable Normalement vous d clarez juste une variable avec une affectation du genre VARIABLE valeur En rempla ant la d claration de la variable avec les lignes suivantes vous pouvez obtenir des informations int ressantes sur ce que fait votre script declare t VARIABLE valeur trap echo VARIABLE est utilis e ici DEBUG suite du script 2 3 2 Purger les d chets de traitements avant de quitter La commande whatis repose sur une base de donn es qui est r guli rement reconstruite avec le script makewhatis cron lanc par cron bin bash LOCKFILE var lock makewhatis lock Le makewhatis pr c dent devrait s tre ex cut avec succ s f LOCKFILE amp amp exit 0 Avant de quitter liminer les fichiers verrous trap rm f LOCKFILE exit 255 EXIT touch LOCKFILE makewhatis u w exit 0 3 R sum Des signaux peuvent tre envoy s votre programme avec la commande kill ou des raccourcis clavier Ces signaux peuvent tre r cup r s sur quoi une action peut tre effectu e a
172. nction e Cr ation et affichage de fonctions depuis la ligne de commande Fonctions dans les scripts e Passer des arguments une fonction Quand utiliser une fonction 1 Introduction 1 1 Qu est ce qu une fonction La fonction Shell est le moyen de grouper des commandes en vue d une ex cution ult rieure par l appel d un nom donn ce groupe ou routine Le nom de la routine doit tre unique dans le Shell ou le script Toutes les commandes qui constituent une fonction sont ex cut es comme des commandes r guli res Quand une fonction est appel e comme le nom d une simple commande la liste des commandes associ es ce nom de fonction est trait e Une fonction est ex cut e l int rieur du Shell dans lequel elle a t d clar e aucun processus nouveau n est cr pour interpr ter les commandes Les commandes int gr es sp ciales sont d tect es avant les fonctions Shell pendant l analyse des commandes Les int gr es sp ciales sont break continue eval exec exit export readonly return set shift trap et unset 1 2 La syntaxe des fonctions Les fonctions emploient plut t la syntaxe function FONCTION COMMANDES ou l option FONCTION COMMANDES Chacune d finit une fonction Shell FONCTION L emploi de la commande int gr e function est optionnel cependant si elle n est pas employ e les parenth ses sont n cessaires Les commandes list es entre les accolades forment l
173. ndes Gawk 2 Le programme d affichage 2 1 Afficher les champs s lectionn s 2 2 Formater les champs 2 3 La commande print et les expressions r guli res 2 4 Patrons particuliers 2 5 Les scripts Gawk 3 Les variables Gawk 3 1 Le s parateur de champs en entr e 3 2 Les s parateurs de r sultat 3 3 Le nombre d enregistrements 3 4 Les variables d finies par l utilisateur 3 5 Plus d exemples 3 6 Le programme printf 4 R sum 5 Exercices R sum Dans ce chapitre nous aborderons e Qu est ce que gawk L emploi de commandes gawk sur la ligne de commande e Comment formater du texte avec gawk e Comment gawk utilise les expressions r guli res e Gawk dans les scripts e Gawk et les variables Pour s amuser un peu Comme pour sed de nombreux livres ont t crits sur les nombreuses versions de awk Cette introduction est loin d tre compl te et vise seulement faire comprendre les exemples des chapitres suivants Pour approfondir le mieux est de d buter avec la documentation qui accompagne GNU awk GAWK Effective AWK Programming A User s Guide for GNU Awk 1 Commencer avec gawk 1 1 Qu est ce que gawk Gawk est la version GNU du programme couramment disponible sous UNIX awk un autre diteur par lot populaire Du fait que le programme awk n est souvent qu un lien vers gawk nous nous y r f rerons en tant que awk La fonction de base de awk est de chercher dans des fichiers des ligne
174. nes de ces options les plus usit es dans les chapitres suivants la liste compl te peut tre trouv e dans les pages info de Bash Bash features Invoking Bash 2 2 2 Fichiers de d marrage de Bash Les fichiers de d marrage sont des scripts qui sont lus et ex cut s par Bash quand il d marre Les sous sections suivantes d crivent diverses fa ons de d marrer le Shell et le fichier de d marrage lu en cons quence 2 2 2 1 Invoqu pour tre le Shell d interaction ou avec l option login Interactif signifie que vous pouvez entrer des commandes Le Shell n est pas lanc parce qu un script a t activ Un Shell de connection vous donne acc s au Shell apr s qu il vous ait authentifi g n ralement en contr lant le nom d utilisateur et le mot de passe Fichiers lus etc profile e bash_profile bash_login ou profile le premier fichier lisible trouv est lu e bash logout la d connexion Des messages d erreur s affichent si les fichiers de configuration existent mais sont illisibles Si un fichier n existe pas Bash cherche le suivant 2 2 2 2 Invoqu comme Shell interactif sans tape de connexion Un Shell sans connexion signifie que l acc s ne n cessite pas d authentification par le syst me Par exemple quand vous ouvrez un terminal par le biais d une icone ou d un menu Fichiers lus bashrc Ce fichier est habituellement r f renc dans bash profile if f
175. ng thus compiled if they are not themselves derivative works of the Document If the Cover Text requirement of section 3 is applicable to these copies of the Document then if the Document is less than one quarter of the entire aggregate the Document s Cover Texts may be placed on covers that surround only the Document within the aggregate Otherwise they must appear on covers around the whole aggregate 9 Translation Translation is considered a kind of modification so you may distribute translations of the Document under the terms of section 4 Replacing Invariant Sections with translations requires special permission from their copyright holders but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections You may include a translation of this License provided that you also include the original English version of this License In case of a disagreement between the translation and the original English version of this License the original English version will prevail 10 Termination You may not copy modify sublicense or distribute the Document except as expressly provided for under this License Any other attempt to copy modify sublicense or distribute the Document is void and will automatically terminate your rights under this License However parties who have received copies or rights from you under this License will not have their licenses terminated so long
176. ni a la r ception d un signal SIGWINCH Un index dans COMP_WORDS qui pointe sur le mot o se trouve le curseur La ligne de commande courante Index qui point la position du curseur dans la commande courante Une variable tableau dont chaque l ment renvoie un mot de la commande courante Une variable tableau d o Bash tire des interpr tations possibles qui ont t g n r es par une fonction Shell dans le processus de g n ration Une variable tableau m morisant le contenu de la pile de r pertoires Le nombre identifiant l utilisateur actif L diteur utilis par d faut par l option e de l int gr e fc Une liste de suffixes ignorer s par s par deux points quand se produit la g n ration de noms de fichiers Contient le nom de fonction si une fonction Shell est en train de s ex cuter Une liste de patrons s par s par deux points qui sert d finir les fichiers ignorer lors de la g n ration de nom de fichiers Un tableau qui m morise les groupes auxquels l utilisateur appartient Jusqu 3 caract res permettant de contr ler l expansion d historique la substitution rapide et le d coupage en mots Le num ro d historique ou le rang dans la liste d historique de la commande en cours D termine si la commande en cours est ajout e au fichier d historique Le nom de fichier dans lequel l historique des commandes est conserv La valeur par d faut est b
177. nowledgements or Dedications preserve the section s title and preserve in the section all the substance and tone of each of the contributor acknowledgements and or dedications given therein L Preserve all the Invariant Sections of the Document unaltered in their text and in their titles Section numbers or the equivalent are not considered part of the section titles M Delete any section entitled Endorsements Such a section may not be included in the Modified Version N Do not retitle any existing section as Endorsements or to conflict in title with any Invariant Section If the Modified Version includes new front matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document you may at your option designate some or all of these sections as invariant To do this add their titles to the list of Invariant Sections in the Modified Version s license notice These titles must be distinct from any other section titles You may add a section entitled Endorsements provided it contains nothing but endorsements of your Modified Version by various parties for example statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard You may add a passage of up to five words as a Front Cover Text and a passage of up to 25 words as a Back Cover Text to the end of the list of Cover Texts in the Modified Version Only one passage
178. nt effet les modifications De la deuxi me mani re les modifications sont appliqu es la session active du Shell Figure 3 1 Diff rentes invites pour des utilisateurs diff rents EE ox File Edit View Terminal Go Help franky gt cp bashre bashrc old franky gt vim bashre franky gt diff bashre bashrc old 9d8 lt export PS1 033 1 42m USER is in w 033 Om franky gt source bashre La plupart des scripts Shell s ex cutent dans leur propre environnement les processus enfants n h ritent pas des variables du parent moins que celui ci les exporte Ex cuter avec source un fichier contenant des instructions Shell est un moyen d appliquer les changements son propre environnement de d finir des variables dans son Shell actif Cet exemple montre aussi le param trage de diverses invites pour divers utilisateurs Dans ce cas rouge signifie danger Si vous avez une invite verte ne vous inqui tez pas trop Notez que source resourcefile est quivalent 4 resourcefile Si vous vous trouvez perdu avec tous ces fichiers de configuration et que vous ne ciblez pas o un certain param tre est d fini employez echo tout comme pour debugger un script voir la Section 3 2 D bugger qu une partie du script Vous pouvez ajouter des lignes comme celles ci echo Avant ex cution de bash profile ou comme celles ci echo Avant d finition de PS1 dans bashrc export PS1 la b
179. o e Gaffe Vous voulez les empoisonner n r n echo e Gaffe N oubliez pas le guide n esac fi echo Fin echo e a a aMerci de votre visite En esp rant vous revoir bient t n michel test gt feed sh apple camel Nourrir le chameau avec des pommes Avez vous vu l affiche Ne pas nourrir les chameaux Nourrissage fait Gaffe Achetez la nourriture que le zoo fournie l entr e i Gaffe Vous voulez les empoisonner Fin Merci de votre visite En esp rant vous revoir bient t michel test gt feed sh apple Utilisation du script feed feed sh menu nom animal Plus d informations sur les caract res d chappement la Section 3 2 Le caract re Echap escape Le tableau suivant donne un aper u des s quences reconnues par la commande echo Tableau 8 1 S quences d chappement reconnues par la commande echo S quence sens a Alerte sonnerie b Retour arri re c Supprime les saut de lignes r siduel la fin e Escape f Saut de page n Saut de ligne r Retour chariot t Tabulation horizontale v Tabulation verticale Slash invers ONNN Le caract re sur 8 bits dont la valeur en base octal est NNN de 0 3 chiffres en octal NNN Le caract re sur 8 bits dont la valeur en base octal est NNN de 1 3 chiffres en octal xHH Le caract re sur 8 bits avec la valeur en base hexad cimale de 1 2 chiffres en hexad c
180. obl mes quand vous sp cifiez le tiret en tant que premier param tre puisqu il peut tre interpr t comme une option de la commande pr c dente L usage de dev fd permet l uniformit et vite la confusion michel gt filter body txt cat header txt dev fd 0 footer txt lp Dans cet exemple propre toutes les sorties sont cumul es dans l entonnoir Ip pour les envoyer vers l imprimante par d faut 2 4 2 Read et exec 2 4 2 1 Assigner des descripteurs de fichiers Une autre fa on de consid rer les descripteurs de fichiers est d y penser comme un indicateur num rique assign un fichier Au lieu d employer le nom de fichier vous pouvez employer le num ro de descripteur L int gr e exec peut tre utilis e pour remplacer le Shell du process actif ou pour r assigner des descripteurs de fichiers ce Shell Par exemple elle peut tre employ e pour assigner un descripteur de fichier un fichier Employez exec fdN gt file pour assigner le descripteur N au fichier file en sortie et exec fdN lt file pour assigne le descripteur N au fichier file en entr e Apr s qu un descripteur ait t assign un fichier il peut tre employ avec les op rateurs Shell de redirection comme le montre l exemple suivant michel gt exec 4 gt result txt michel gt filter body txt cat header txt dev fd 0 footer txt gt amp 4 michel gt cat result txt Ce texte est affich au d but de chaque travail d impress
181. ofile cathy gt grep etc profile for i in etc profile d sh do 3 La correspondance de patron dans les fonctionnalit s Bash 3 1 Intervalle de caract re En plus de grep et des expressions r guli res il y a un bon paquet de correspondances que vous pouvez faire directement dans le Shell sans avoir besoin d un programme externe Comme vous savez d j l ast risque et le point d interrogation ciblent toute cha ne ou tout caract re respectivement Prot gez ces caract res sp ciaux pour les cibler litt ralement cathy gt touch cathy gt ls Mais vous pouvez aussi employer les crochets pour cibler tout caract re ou intervalle de caract res compris si la paire de caract res est s par e par un tiret Un exemple cathy gt ls ld a cx z drwxr xr x 2 cathy cathy 4096 Jul 20 2002 app defaults drwxrwxr x 4 cathy cathy 4096 May 25 2002 arabic drwxrwxr x 2 cathy cathy 4096 Mar 4 18 30 bin drwxr xr x 7 cathy cathy 4096 Sep 2 2001 crossover drwxrwxr x 3 cathy cathy 4096 Mar 22 2002 xml Ceci liste tous les fichiers dans le r pertoire racine de cathy commen ant par a b c X Yy O Z A Si le premier caract re entre crochet est ou tout caract re non inclus sera cibl Pour cibler le l inclure en premier ou dernier caract re de l ensemble L ordre d pend du param trage local et de la valeur de la variable LC_CO
182. on sandy gt txt2html sh test converting test done sandy gt cat test lt html gt lt head gt lt title gt sed generated html lt title gt lt head gt lt body bgcolor ffffff gt lt pre gt linel Line2 line3 lt pre gt pie fa lt html gt sandy gt Ce n est pas vraiment la bonne m thode c est juste un exemple pour d montrer le potentiel de sed Voir la Section 3 Les variables Gawk pour une solution plus d cente a ce probleme avec les constructions awk BEGIN et END sed facile Les diteurs sophistiqu s permettant la mise en relief de la syntaxe reconnaissent la syntaxe sed Cela peut tre d une grande aide si vous avez tendance oublier des slashs invers s 4 R sum L diteur par lot sed est un outil puissant de travail sur une ligne lequel peut traiter des flots de donn es il peut prendre en entr e les lignes depuis un tube Ce qui le rend pratique pour un usage diff r L diteur sed utilise des commandes de type vi et accepte les expressions r guli res L outil sed peut lire des commandes depuis la ligne de commande ou depuis un script Il est souvent employ pour effectuer des chercher remplacer sur des lignes contenant un patron 5 Exercices Ces exercices sont faits pour montrer plus avant ce que sed peut faire 1 Afficher une liste des fichiers de votre r pertoire de scripts qui se finissent par sh Pensez que vous devrez peut tre s
183. on dans un script ce qui facilite grandement les t ches d dition r p titives Quand vous devez effectuer un remplacement de texte dans un grand nombre de fichiers sed est d une grande aide 1 2 commandes sed Le programme sed peut effectuer substitutions et suppressions avec des expressions r guli res comme celles utilis es avec la commande grep voir Section 2 Exemples en utilisant grep Les commandes d dition sont similaires celles utilis es dans l diteur vi Tableau 5 1 Commandes d dition Sed Commande Effet a Ajoute le texte sous la ligne courante c Remplace le texte de la ligne courante par le nouveau texte d Supprime le texte i Ins re le texte au dessus de la ligne courante p Imprime le texte r Lit un fichier s Cherche et remplace du texte w Ecrit dans un fichier A part les commandes d dition vous pouvez donner des options sed Un aper u se trouve dans le tableau ci dessous Tableau 5 2 Options Sed Option Effet e SCRIPT Ajoute les commandes de SCRIPT au jeu de commandes ex cuter sur le flot en entr e f Ajoute les commandes contenues dans le fichier SCRIPT FILE au jeu de commandes ex cuter sur le flot d entr e n Mode Silencieux V Affiche les informations de version et s arr te Les pages info de sed contiennent plus d informations nous ne listons ici que les commandes et les options le plus fr quemment utilis 2 Op rations d di
184. on regarding them The Invariant Sections are certain Secondary Sections whose titles are designated as being those of Invariant Sections in the notice that says that the Document is released under this License The Cover Texts are certain short passages of text that are listed as Front Cover Texts or Back Cover Texts in the notice that says that the Document is released under this License A Transparent copy of the Document means a machine readable copy represented in a format whose specification is available to the general public whose contents can be viewed and edited directly and straightforwardly with generic text editors or for images composed of pixels generic paint programs or for drawings some widely available drawing editor and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent A copy that is not Transparent is called Opaque Examples of suitable formats for Transparent copies include plain ASCII without markup Texinfo input format LaTeX input format SGML or XML using a publicly available DTD and standard conforming simple HTML designed for human modification Opaque formats include PostScript PDF proprietary formats that can be read and edited only by proprietary word
185. onne valeur echo PS1 est d fini comme ceci PS1 2 Variables 2 1 Types de variables Comme dans l exemple ci dessus les variables Shell sont en majuscule par convention Bash garde une liste de 2 types de variables 2 1 1 Les variables Globales Les variables Globales ou variables d environnement sont disponibles dans tous les Shells Les commandes env ou printenv peuvent tre employ es pour afficher les variables d environnement Ces programmes font partie du paquetage sh utils Ci dessous un affichage fr quent franky gt printenv CC gcc CDPATH usr local usr CFLAGS 02 fomit frame pointer COLORTERM gnome terminal CXXFLAGS 02 fomit frame pointer DISPLAY 0 DOMAIN hq xalasys com e TOR vi FCEDIT vi FIGNORE 0 G BROKEN FILENAMES 1 GDK USE XFT 1 GDMSESSION Default GNOME DESKTOP SESSION ID Default GTK RC FILES etc gtk gtkrc nethome franky gtkrc 1 2 gnome2 GWMCOLOR darkgreen GWMTERM xterm HISTFILESIZE 5000 history control ignoredups HISTSIZE 2000 HOME nethome f ranky HOSTNAME octarine hq xalasys com INPUTRC etc inputrc IRCNAME f ranky JAVA HOME usr java j2sdk1 4 0 LANG en US LDFLAGS s LD LIBRARY PATH usr lib mozilla usr lib mozilla plugins LESSCHARSET Latinl LESS edfMQ LESSOPEN usr bin lesspipe sh s LEX flex LOCAL MACHINE octarine LOGNAME f ranky LS COLORS no 00 fi 00 di 01 34 ln 01 36 pi 40 33 so0 01 35 bd 40 33 01 cd 40 33 01 or 01 05 37 4
186. ons r guli res vim perl la base de donn es PostgreSQL etc Elles peuvent tre interpr t es par tout langage et application par l emploi de biblioth ques externes et on les retrouve m me sur des syst mes non UNIX Par exemple les expressions r guli res sont employ es dans le tableur Excel qui est fourni avec la suite Office de Microsoft Dans ce chapitre nous avons eu un avant go t de la commande grep qui est indispensable tout environnement UNIX Note La commande grep peut faire bien plus que les quelques op rations vues ici nous l avons juste utilis e titre d illustration pour les expressions r guli res La version GNU de grep est fourni avec un bon lot de documentations qu il vous est recommand de lire Bash a des fonctionnalit s int gr es pour cibler des patrons et peut reconna tre des classes de caract res et des intervalles 5 Exercices Ces exercices vous aideront ma triser les expressions r guli res 10 Il 12 Afficher une liste de tous les utilisateurs de votre syst me qui se connectent avec le Shell Bash par d faut Depuis le r pertoire etc group afficher toutes les lignes commen ant avec la cha ne daemon Imprimer toutes les lignes de ce m me fichier qui ne contiennent pas la cha ne Afficher les informations du syst me local a partir du fichier etc hosts afficher le num ro des lignes qui correspondent a la cha ne recherch e et comp
187. ont saisis Chapitre 10 Un peu plus sur les variables Table des mati res 1 Types de variables 1 1 Affectation g n rale de valeur 1 2 Utiliser l int gr e declare 1 3 Constantes 2 Variables tableau 2 1 Cr er des tableaux 2 2 Invoquer les variables d un tableau 2 3 Supprimer des variables tableau 2 4 Exemples de tableaux 3 Op rations sur les variables 3 1 Arithm tique sur les variables 3 2 Longueur de variable 3 3 Transformation de variables 4 R sum 5 Exercices R sum Dans ce chapitre nous aborderons l emploi plus pouss des variables et param tres Une fois achev vous serez capable de D clarer et utiliser un tableau de variables Sp cifier le type de variable que vous voulez utiliser Rendre les variables en lecture seule Employer set pour affecter une valeur une variable 1 Types de variables 1 1 Affectation g n rale de valeur Comme nous l avons d j vu Bash comprend plusieurs types de variables ou param tres Jusqu maintenant nous ne nous sommes pas inqui t du type de variable affect e de sorte que nos variables pouvaient stocker toute sorte de valeur que nous leur affections Une simple ligne de commande illustre ceci bob in VARIABLE 12 bob in echo VARIABLE 12 bob in VARIABLE string bob in echo VARIABLE string Il y a des cas o vous voulez viter ce genre de comportement par exemple quand vous manipulez des num r
188. os de t l phone et autres codifications A part les entiers et les variables vous pourriez aussi vouloir sp cifier une variable avec une valeur constante Ceci est souvent fait au d but du script quand la valeur de la constante est d finie Ensuite il est seulement fait r f rence au nom de la variable stockant la constante de sorte que quand la logique veut que la constante soit chang e cela n est fait qu un endroit Une variable peut aussi tre une s rie de variables de tout type c est dire un tableau de variables VAROVAR1 VAR2 VARN 1 2 Utiliser l int gr e declare Avec l instruction declare nous pouvons encadrer l affectation de valeur une variable La syntaxe de declare est la suivante declare OPTION s VARIABLE value Les options suivantes sont employ es pour d terminer le type de donn e de la variable et pour lui assigner des attributs Tableau 10 1 Options de l int gr e declare Option sens a Variable tableau f Utilise uniquement les noms de fonction i La variable doit tre consid r e en tant qu entier une valuation arithm tique est effectu e quand une valeur est assign e la variable voir Section 4 6 L expansion arithm tique p Affiche les attributs et la valeur de chaque variable Quand p est employ les options suppl mentaires sont ignor es r fait que la variable est en lecture seule A cette variable ne peut alors lui tre affect une autre val
189. ou plus de fois N M L l ment pr c dent sera pr sent au moins N fois mais pas plus de M fois repr sente l intervalle si il n est pas premier ou dernier dans une liste ou le dernier point d un intervalle dans une liste f Correspond une cha ne vide au d but de la ligne repr sente aussi les caract res ne se trouvant pas dans l intervalle d une liste Correspond la cha ne vide la fin d une ligne b Correspond la cha ne vide au d but ou la fin d un mot B Correspond la cha ne vide l int rieur d un mot lt Correspond la cha ne vide au d but d un mot gt Correspond la cha ne vide la fin d un mot 2 expressions r guli res peuvent tre concat n es l expression r guli re r sultant correspond toute cha ne form e par 2 sous cha nes concat n es qui respectivement correspondent aux sous expressions 2 expressions r guli res peuvent tre jointes par l op rateur l expression r guli re r sultant correspond toute cha ne qui correspond l une ou l autre des sous expressions La r p tition a la pr s ance sur la concat nation laquelle a la pr s ance sur la jointure Toute une expression peut tre mise entre parenth ses pour viter ces r gles de pr s ance 1 3 Expressions r guli res basiques versus celles tendues Dans les expressions r guli res basiques les m tacaract res l et
190. ource des fichiers d init de programmes sp cifiques ls vim less for i in etc profile d sh do if r i then i fi done Param trage de programmes d initialisation source etc java conf export NPX_PLUGIN_PATH JRE_HOME plugin ns4plugin usr lib netscape plugins PAGER usr bin less unset i Ce fichier de configuration d finit quelques variables de base de l environnement du Shell ainsi que quelques variables requises par les utilisateurs lan ant Java et ou des applications Java depuis leur navigateur Voir Section 2 Variables Voir Chapitre 7 Les instructions de condition pour en savoir plus sur les structures if employ es dans ce fichier Chapitre 9 T ches r p titives traite des boucles tel que for Le source Bash contient des exemples de fichiers profile pour un usage courant ou particulier Ceux ci et celui donn en exemple ci dessus n cessitent des adaptations propres les faire fonctionner dans votre environnement 1 1 2 etc bashrc Sur des syst mes qui offrent divers types de Shell il peut tre judicieux de mettre la configuration sp cifique Bash dans ce fichier parce que etc profile est aussi lu par d autres Shell comme Bourne Pour viter que se produisent des erreurs de syntaxe par des Shells qui ne comprennent pas la syntaxe de Bash le fichier de configuration de chaque Shell est diff rent Dans un tel cas le fichier de l utilisateur bashrc devrait pointer sur
191. ous les utilisateurs de votre syst me avec une description kelly is in gt awk BEGIN FS print 1 t 5 etc passwd output omitted kelly Kelly Smith franky Franky B cady Eddy White willy William Black cathy Catherine the Great sandy Sandy Li Wong kelly is in gt Dans un script awk cela ressemblerait a kelly is in gt cat printnames awk BEGIN FS print 1 t 5 kelly is in gt awk f printnames awk etc passwd output omitted Choisir un s parateur de champs d entr e soigneusement pour viter des soucis Un exemple pour illustrer ceci disons que vous obtenez l entr e sous la forme de lignes qui ressemble a Sandy L Wong 64 Zoo St Antwerp 2000X Vous crivez une commande ou un script qui affiche le nom de la personne dans cet enregistrement awk BEGIN FS print 1 2 3 inputfile Mais une personne pourrait avoir un doctorat et ca pourrait s crire comme a Sandy L Wong Doctorat 64 Zoo St Antwerp 2000X Votre awk donnera un mauvais r sultat sur cette ligne Au besoin faire un awk suppl mentaire ou un sed pour uniformiser le format des donn es en entr e Le s parateur de champs en entr e est par d faut un ou des espaces ou des tabulations 3 2 Les s parateurs de r sultat 3 2 1 Les s parateurs de champs de r sultat Les champs sont habituellement s par s par des espaces dans le r sultat Ceci est
192. out n est pas disponible Si vous ex cutez un script par cron fournir le chemin complet et rediriger les r sultats et les erreurs Du fait que le Shell tourne en mode non interactif toute erreur provoquera la fin du script pr matur ment si vous n y songez pas Les chapitres suivants traiteront en d tail les scripts ci dessus 5 6 Exemple init script NdT d initialisation Un script init d marre les services syst me sur des machines UNIX et Linux Les d mons de journalisation du syst me de gestion des ressources de contr le d acc s et de mails en sont des exemples Ces scripts aussi appel s scripts de d marrage sont stock s dans un endroit particulier de votre syst me tel que etc rc d init d ou etc init d Init le processus initial lit ses fichiers de configuration et d cide quels services il d marre ou arr te en fonction du niveau d ex cution syst me Le niveau d ex cution est un tat de configuration du syst me NdT qui correspond une utilisation particuli re du syst me chaque syst me a un niveau d ex cution qui autorise un unique utilisateur par exemple pour ex cuter des t ches administratives pour lesquelles le syst me doit tre dans un tat aussi stable que possible Comme par exemple r cup rer un fichier syst me important depuis une sauvegarde Les niveaux d ex cution de d marrage et d arr t sont habituellement aussi configur s Les t ches ex cuter au d marrage ou l arr t
193. param trer les permissions par d faut mask 002 Toutes pour moi lecture pour le groupe et les autres diverses actions ZSHORHHHHH HH cal date m date Y En l absence de bash profile ce fichier sera lu 1 2 3 profile En l absence de bash profile et bash Login profile est lu Il peut d finir le m me param trage qui alors peut tre accessible aux autres Shells Rappelez vous que les autres Shells peuvent mal interpr ter la syntaxe Bash 1 2 4 bashre Aujourd hui il est plus courant d utiliser un Shell hors connection par exemple quand vous vous connectez via une interface graphique de type X terminal A l ouverture de la fen tre l utilisateur n a pas besoin de fournir un nom et un mot de passe pas d authentification Bash cherche bashre dans ce cas et de m me la connection ce fichier est r f renc dans le fichier de configuration de connection ce qui vite d entrer le m me param trage dans diff rents fichiers Dans ce fichier utilisateur bashrc un ensemble de variables pour des programmes sp cifiques et d alias est d fini apr s que le fichier usage global etc bashrc ait t lu franky gt cat bashrc home franky bashrc Source de d finitions globales if f etc bashrc then etc bashrc fi shell options set o noclobber mes variables Shell export PS1 033 1 44m u w 033 0m export PATH PATH bin scripts mes alia
194. param tres Il ach ve l ex cution du script Il est plus souvent utilis si l entr e requise de l utilisateur est incorrecte si une instruction a chou e ou si une autre erreur intervient L instruction exit admet un argument optionnel Cet argument est le code sous forme d entier du statut d ex cution qui est renvoy au parent et stock dans la variable Un argument z ro signifie que le script s est ex cut correctement Tout autre valeur peut tre employ e par le programmeur pour renvoyer divers messages au parent afin que divers traitements soient activ s selon l chec ou la r ussite du processus enfant Si aucun argument n est donn la commande exit le Shell parent exploite la valeur courante de la variable Ci dessous un exemple avec un script penguin sh l g rement adapt lequel renvoie son statut d ex cution vers son parent feed sh anny testdir gt cat penguin sh bin bash Ce script vous laisse pr senter divers menus a Tux Il ne sera heureux que quand il aura du poisson Nous avons aussi ajout un dauphin et logiquement un chameau if menu poisson then if animal pingouin then echo Hmmmmmm poisson Tux heureux elif animal dauphin then EN Pweetpeettreetppeterdepweet else echo prrrrrrrt fi else if animal pingouin then echo Tux d teste a Tux veut du poisson exit 1 elif animal dauphin then
195. pas assez d espace disque disponible supprimer les images des mois pr c dents bin bash Ce script copie les fichiers de mon r pertoire racine dans le r pertoire du serveur WEB Un nouveau r pertoire est cr a chaque heure ORS Si les images prennent trop de place les plus anciennes sont supprim es while true do DISKFUL df h WEBDIR grep v File awk print 5 cut d f1 until DISKFUL ge 90 do DATE date Y m d HOUR date H mkdir WEBDIR DATE while HOUR ne 00 do DESTDIR WEBDIR DATE HOUR mkdir DESTDIR mv PICDIR jpg DESTDIR sleep 3600 HOUR date H done DISKFULL df h WEBDIR grep v File awk print 5 cut d f1 done TOREMOVE find WEBDIR type d a mtime 30 for i in TOREMOVE do rm rf i done done Notez l initialisation des variables HOUR et DISKFULL et l emploi d options avec Is et date afin d obtenir une liste correcte pour TOREMOVE 4 Redirection d entr e sortie et boucles 4 1 Redirection des entr es Plut t que de contr ler une boucle en testant le r sultat d une commande ou la saisie utilisateur vous pouvez sp cifier un fichier depuis lequel l entr e est lue pour contr ler la boucle Dans un tel cas read est souvent la commande de contr le Tant que des lignes sont entr es dans la boucle les commandes de la boucle sont ex cut es D s que toutes les lignes ont t lues la bouc
196. perdent leur sens sp cial la place employez la version avec slash invers l C et V rifiez dans la documentation de votre syst me si les commandes admettent les expressions tendues dans les expressions r guli res 2 Exemples en utilisant grep 2 1 Qu est ce que grep grep cherche dans les fichiers en entr e les lignes qui contiennent une correspondance dans une liste donn e de patrons Quand il trouve une correspondance dans une ligne il copie la ligne sur la sortie standard par d faut ou sur tout autre type de sortie que vous avez requise par les options Bien que grep s attende tablir une correspondance sur du texte il n a pas de limite sur la longueur de la ligne lue autre que celle de la m moire disponible et il trouve la correspondance sur n importe quel caract re dans la ligne Si le dernier octet d un fichier en entr e n est pas un saut de ligne grep discr tement en ajoute un Parce que le saut de ligne est aussi un s parateur dans la liste des patrons il n y a pas moyen de rep rer les caract res saut de ligne dans le texte Quelques exemples cathy gt grep root etc passwd root x 0 0 root root bin bash operator x 11 0 operator root sbin nologin cathy gt grep n root etc passwd 1 root x 0 0 root root bin bash 12 operator x 11 0 operator root sbin nologin cathy gt grep v bash etc passwd grep v nologin sync x 5 0 sync
197. ples 8 R sum 9 Exercices 10 Un peu plus sur les variables 1 Types de variables 1 1 Affectation g n rale de valeur 1 2 Utiliser l int gr e declare 1 3 Constantes 2 Variables tableau 2 1 Cr er des tableaux 2 2 Invoquer les variables d un tableau 2 3 Supprimer des variables tableau 2 4 Exemples de tableaux 3 Op rations sur les variables 3 1 Arithm tique sur les variables 3 2 Longueur de variable 3 3 Transformation de variables 4 R sum 5 Exercices 11 Fonctions 1 Introduction 1 1 Qu est ce qu une fonction 1 2 La syntaxe des fonctions 1 3 Les param tres positionnels dans les fonctions 1 4 Afficher une fonction 2 Exemples de fonctions dans des scripts 2 1 Recyclage 2 2 D finir le chemin 2 3 Sauvegarde distance 3 R sum 4 Exercices 12 Trapper les signaux 1 Signaux 1 1 Introduction 1 2 Utilisation de signaux avec kill 2 Pi ger les signaux 2 1 G n ralit 2 2 Comment Bash interpr te trap 2 3 Plus d exemples 3 R sum 4 Exercices A Possibilit s du Shell 1 Fonctionnalit s courantes 2 Fonctionnalit s sp cifiques B GNU Free Documentation License 1 Preamble 2 Applicability and definitions 3 Verbatim copying 4 Copying in quantity 5 Modifications 6 Combining documents 7 Collections of documents 8 Aggregation with independent works 9 Translation 10 Termination 11 Future revisions of this license 12 How to use this License for your documents
198. porairement ou l usage d un script nous utiliserions plut t set Employez moins pour activer l option pour la d sactiver willy test gt set o noclobber willy test gt touch test willy test gt date gt test bash test cannot overwrite existing file willy test gt set o noclobber willy test gt date gt test L exemple ci dessus montre l usage de l option noclobber qui vite que les fichiers existants soient cras s par les op rations de redirection La m me chose joue pour les options 1 caract re par exemple u qui activ e traite les variables non d clar es comme des erreurs et quitte un Shell non interactif quand survient une telle erreur willy gt echo VAR willy gt set u willy gt echo VAR bash VAR unbound variable Cette option est aussi utile pour d tecter des valeurs incorrectes affect es des variables la m me erreur se produira aussi par exemple quand une cha ne de caract re est affect e une variable qui a t d clar e explicitement comme devant contenir une valeur num rique Voici un dernier exemple qui illustre l option noglob laquelle emp che les caract res sp ciaux d tre interpr t s willy testdir gt set o noglob willy testdir gt touch willy testdir gt ls l rw rw r 1 willy willy 0 Feb 27 13 37 7 R sum L environnement Bash peut tre configur globalement et pour chaque utilisateur Divers fichiers d
199. pr c d d un num ro Si in LIST est absent les param tres positionnels sont affich s comme si in avait t sp cifi LIST est affich une fois seulement A l affichage des tous les l ments l invite PS3 est affich e et une ligne du standard d entr e est lue Si la ligne consiste en un nombre qui correspond un des l ments la valeur de WORD est d finie avec le nom de cet l ment Si la ligne est vide les l ments et l invite PS3 sont r affich s Si un caract re EOF End Of File est lu la boucle se termine Parce que la plupart des usagers n ont pas id e de la combinaison de touches pour EOF il est plus convivial d ajouter une commande break comme l un des l ments Tout autre valeur issue de la ligne lue d finira WORD comme une cha ne nulle La ligne lue est m moris e dans la variable REPLY Les RESPECTIVE COMMANDS sont ex cut es apr s chaque choix valide jusqu ce que le nombre repr sentant le break soit lu Ce qui fait quitter la boucle 6 1 2 Exemples Voici un exemple tr s simple mais comme vous le constatez il n est pas tr s convivial carol octarine testdir cat private sh bin bash echo Ce script peut mettre un acc s priv tout fichier de ce r pertoire echo Entrez le num ro du fichier que vous voulez prot ger select FILENAME in do echo Vous avez s lectionn FILENAME REPLY il est maintenant accessible que par vous chmod go rwx FILENAME done
200. prendra effet qu la lecture de la ligne suivante Les commandes suivant la d finition de l alias sur la ligne ne seront pas affect es par le nouvel alias Un alias est interpr t quand la d finition d une fonction est lue pas quand la fonction est ex cut e parce que la d finition de fonction est elle m me une commande compos e En cons quence l alias d fini dans une fonction n est pas utilisable tant que la fonction n a pas t ex cut e Nous aborderons les alias en d tail la Section 5 Alias 2 2 7 Tableaux Bash fournit les variables sous la forme d un tableau une dimension Toute variable peut tre utilis e comme un tableau l int gr e declare d clarera explicitement un tableau Il n y a pas de limite sup rieure la taille d un tableau ni de besoin de trier ou d assigner de fa on contigu les valeurs Les tableaux sont bas s sur le z ro Voir Chapitre 10 Un peu plus sur les variables 2 2 8 Pile de r pertoires La pile de r pertoires est une liste des r pertoires r cemment visit s L int gr e pushd ajoute des r pertoires la pile tout en changeant le r pertoire courant et l int gr e popd enl ve les r pertoires sp cifi s de la pile en positionant le r pertoire courant comme tant celui qui vient d tre enlev Le contenu peut tre affich avec la commande dirs ou en visualisant la variable DIRSTACK Plus d informations au sujet du fonctionnement de ces m canismes se tro
201. processors SGML or XML for which the DTD and or processing tools are not generally available and the machine generated HTML produced by some word processors for output purposes only The Title Page means for a printed book the title page itself plus such following pages as are needed to hold legibly the material this License requires to appear in the title page For works in formats which do not have any title page as such Title Page means the text near the most prominent appearance of the work s title preceding the beginning of the body of the text 3 Verbatim copying You may copy and distribute the Document in any medium either commercially or noncommercially provided that this License the copyright notices and the license notice saying this License applies to the Document are reproduced in all copies and that you add no other conditions whatsoever to those of this License You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute However you may accept compensation in exchange for copies If you distribute a large enough number of copies you must also follow the conditions in section 3 You may also lend copies under the same conditions stated above and you may publicly display copies 4 Copying in quantity If you publish printed copies of the Document numbering more than 100 and the Document s license notice requires Cover Texts you must enclose the
202. pt 1 1 3 Envoyer des signaux avec le Shell Les signaux suivants peuvent tre envoy s en utilisant le Shell Bash Tableau 12 1 Les signaux de contr le dans Bash Combinaison standard de touches sens Ctrl C Le signal d interruption envoie SIGINT a tous les travaux s ex cutant dans le Shell courant Ctrl Y Le caract re delayed suspend Provoque la suspension d un processus actif quand il tente de lire son entr e depuis le terminal Le contr le est rendu au Shell l utilisateur peut renvoyer en tache de fond r activer ou tuer le processus Delayed suspend n est pas une fonctionnalit connue de tous les syst mes Combinaison standard de touches sens Ctrl Z Le signal suspend envoie SIGTSTP a un programme en train de s ex cuter donc il s arr te et redonne le contr le au Shell Param tres du terminal V rifiez les param tres stty La suspension et la reprise d affichage sont g n ralement d sactiv es si vous utilisez des mulations modernes de terminaux Le xterm standard reconna t Ctrl S et Ctrl Q par d faut 1 2 Utilisation de signaux avec kill La plupart des Shell r cents Bash inclus ont une fonction int gr e kill Dans Bash la fois les noms de signaux et leur num ro sont accept s en tant qu option et les arguments peuvent tre des identifiants de travaux ou de processus Un statut d ex cution peut tre renvoy avec l option 1 z ro si au moins un signal a t envoy
203. ption Shell nultglob est d sactiv e le mot est laiss en l tat Si l option nullglob est activ e et qu aucune correspondance n est trouv e le mot est limin Si l option Shell nocaseglob est activ e la correspondance est recherch e sans consid rer la casse des caract res alphab tiques Quand un patron sert la g n ration de noms de fichiers le caract re au d but d un nom de fichier ou imm diatement apr s un slash doit trouver une correspondance explicitement moins que l option Shell dotglob soit activ e Lors de la recherche de correspondance de noms de fichiers le caract re slash doit toujours tre explicitement indiqu Dans les autres cas le caract re n est pas trait sp cifiquement La variable Shell GLOBIGNORE peut tre utilis e pour restreindre l ensemble de fichiers en correspondance avec le patron Si GLOBIGNORE est activ les noms qui correspondent l un des patrons dans GLOBIGNORE sont retir s de la liste de correspondance Les noms de fichiers et sont toujours ignor s m me si GLOBIGNORE est d sactiv Cependant d clarerGLOBIGNORE a pour effet d activer l option Shell dotglob donc tous les autres fichiers commen ant par correspondront Pour garder la possibilit d ignorer les fichiers commen ant par indiquer comme tant un des patrons ignorer dans GLOBIGNORE L option dotglob est d sactiv quand GLOBIGNORE n est pas d clar 5 Alias
204. r e michel test gt cat penguin sh bin bash Ce Script vous laisse pr senter divers menus Tux Il ne sera heureux que quand il aura du poisson Pour s amuser un peu nous ajoutons quelques animaux if menu poisson then if animal pingouin then echo e Hmmmmmm poisson Tux heureux n elif animal dauphin then eano e a a aPweetpeettreetppeterdepweet a a a n else echo e prrrrrrrt n fi else if animal pingouin then echo e Tux d teste a Tux veut du poisson n exit 1 elif animal dauphin then echo e a a a a a aPweepwishpeeterdepweet a a a exit 2 else echo e Voulez vous lire cette affiche Ne pas nourrir les animal s n exit 3 fi fi michel test gt cat feed sh bin bash Ce script agit en fonction du statut d ex cution renvoy par penguin sh if 2 J then echo e Utilisation du script feed t 0 nourriture nom animal n exit 1 else export menu 1 export animal 2 echo e Nourrissage menu to animal n feed nethome anny testdir penguin sh feed menu animal result echo e Nourrissage fait n case result in 1 echo e Gaffe Vous feriez mieux de lui donner du poisson Sinon il s nerve n 2 echo e Gaffe Pas tonnant qu il fuit notre plan te n 3 echo e Gaffe Achetez la nourriture fournie par le zoo l entr e i n ech
205. r exemple parce qu elle est d pendante de la saisie utilisateur Cet exemple montre une boucle while qui peut tre interrompue Ceci est une version l g rement am lior e du script wisdom sh de la Section 2 2 3 Contr le d une boucle while avec des saisies au clavier bin bash Ce script vous apporte sagesse Vous pouvez maintenant quitter d une facon d cente FORTUNE usr games fortune while true do echo Sur quel sujet voulez vous un conseil echo 1 politique echo 2 startrek echo 3 noyau echo 4 sports echo 5 excusesbidon echo 6 magie echo 7 amour echo 8 litt rature echo 9 drogues echo 10 ducation echo n Entrez votre choix ou 0 pour quitter read choice case choice in 1 FORTUNE politique 2 FORTUNE startrek 3 FORTUNE noyau 4 echo Le sport est une perte d argent d nergie et de temps echo Retournez a votre clavier echo e t t t t Unhealthy is my middle name Soggie 5 FORTUNE excusesbidon 6 FORTUNE magie 7 FORTUNE amour 8 FORTUNE litt rature 9 FORTUNE drogues 16 FORTUNE ducation 6 echo OK au revoir break j echo Ceci n est pas un choix valide taper un chiffre entre et 10 esac done M morisez que break quitte la boucle pas le script Ceci se voit en ajoutant une commande echo la fin du script Cet echo sera aussi ex cut la saisie qui provoque l ex cution du
206. r www intra tille html training cd DIR tar cf TAR FILES echo Compressing TAR gt gt LOGFILE bzip2 TAR echo done gt gt LOGFILE echo Copying to SERVER gt gt LOGFILE scp BZIP SERVER RDIR gt dev null 2 gt amp 1 echo done gt gt LOGFILE echo e Done backing up Bash course n FILES nRubbish removed gt gt LOGFILE rm BZIP DAY date w if DAY lt 2 then echo It is date A only backing up Bash course gt gt LOGFILE bupbash else buplinux bupbash fi echo e Remote backup date SUCCESS n gt gt LOGFILE Ce script est lanc par cron c est dire sans intervention de l utilisateur c est pour a que le standard d erreurs de la commande sep est redirig sur dev null Il pourrait tre observ que toutes les tapes peuvent tre combin es en une commande telle que tar c dir to backup bzip2 ssh server cat gt backup tar bz2 Cependant si vous tes int ress par les r sultats interm diaires qui pourrait tre r cup r s en cas d chec du script ce n est pas ce qu il faut crire L expression command amp gt file est quivalent command gt file 2 gt amp 1 3 R sum Les fonctions fournissent un moyen facile de grouper des commandes que vous avez besoin d ex cuter r guli rement Quand une fonction tourne les param tres positionnels sont ceux de la fonction Quan
207. rank Wang pour ses remarques d taill es sur toutes mes erreurs Remerciements special Tabatha Marshall qui a b n volement revu et l expression et la grammaire On forme une bonne quipe elle travaille quand je dors Et vice versa 6 Observations et retours vari s Informations manquantes liens invalides erreurs de frappe remarques Envoyer un mail lt tille ne veut pas de spam CHEZ xalasys POINT com gt La personne assurant le suivi du document 7 information de Copyright Copyright 2003 2005 Machtelt Garrels Permission est donn e pour copier distribuer et ou modifier ce document selon les termes de la Licence GNU Free Documentation Version 1 1 ou ult rieure publi e par la Free Software Foundation avec les Sections Invariantes New versions of this document Contributions Feedback et Copyright information sans textes de couverture de garde ni de textes de couverture de dos Une copie de la licence est incluse dans Annexe B GNU Free Documentation License intitul e GNU Free Documentation License L auteur et l diteur ont fait leur possible pour s assurer de la validit des informations de ce livre Cependant le contenu de ce guide est mis disposition sans garantie que ce soit explicite ou implicite Ni l auteur ni l diteur ni un distributeur ne peuvent tre tenu responsable des ventuels dommages ou cons quences r sultant de l application du contenu d
208. rect mais vous aurez bien plus d appels d utilisateurs si il ne les informe pas de l tat d avancement Donc inclure des messages qui demandent l utilisateur d attendre le r sultat parce que le traitement est en cours Si possible essayer d indiquer combien de temps l utilisateur aura attendre Si l attente doit r guli rement durer un bon moment l ex cution de certaines t ches vous pouvez consid rer l int r t d int grer la situation du processus dans le r sultat du script Quand vous sollicitez de l utilisateur une saisie le mieux est aussi de donner plut t trop que pas assez d informations au sujet du type de donn es attendues Ceci s applique au contr le des param tres et au message mode d emploi l accompagnant Bash a les commandes echo et printf pour fournir des commentaires aux utilisateurs et bien que vous devriez tre familiaris maintenant au moins avec echo nous verrons d autres exemples dans les sections suivantes 1 2 Utiliser la commande int gr e echo La commande int gr e echo affiche ses arguments s par s par des espaces et termine par un saut de ligne Le statut renvoy est toujours z ro echo a plusieurs options e interpr te les caract res prot g s n supprime les sauts de ligne r siduels de la fin Comme exemple d ajout de commentaires nous crirons le feed sh et le penguin sh de la Section 2 1 2 Contr le des param tres de la ligne de commande de fa on am lio
209. rection pouss e z L 3 L ex cution de commandes 3 1 G n ralit Bash determine le type de programme qui doit tre ex cut Les programmes standards sont les commandes syst me qui existent sous forme compil e dans le syst me Quand un tel programme est ex cut un nouveau processus est cr parce que Bash lance une copie exacte de lui m me Ce processus fils a le m me environnement que son parent seul l identifiant est diff rent Cette proc dure est appell e forking Une fois que le processus a fourch l espace d adresse du processus fils est renseign avec ses propres informations Ceci est fait gr ce un appel syst me par exec Le m canisme fork and exec cependant substitue une ancienne commande par une nouvelle tandis que l environnement dans lequel le nouveau programme est ex cut reste le m me y compris la configuration des entr es sorties des variables d environnement et des priorit s Ce m canisme est employ pour cr er tous les processus UNIX donc il s applique aussi au syst me d op ration Linux M me le premier processus init avec l ID 1 fourche dans la proc dure de d marrage appel e bootstrapping 3 2 Les commandes int gr es du Shell Les commandes int gr es sont parties int grantes du Shell lui m me Quand le nom d une commande int gr e est employ comme le premier mot d une commande simple le Shell ex cute la commande directement sans cr er un nouveau processus Les com
210. ript devrait produire un r sultat compr hensible lisible par le chef Si tout semble fonctionner faire en sorte que le script vous envoie le r sultat par mail employez par exemple mail s Disk space usage lt you your_comp gt lt result Si le d mon des quotas tourne utilisez ses informations si non utilisez find 3 Cr er un r sultat de style XML partir d une liste s par e par des tabulations de la forme suivante Meaning very long line with a lot of description meaning another long line othermeaning more longline testmeaning L0000000000000000000000000000000000000000000000000000000000000000000n line but Le r sultat devrait tre lt row gt lt entry gt Meaning lt entry gt hae very long line lt entry gt lt row gt lt row gt lt entry gt meaning lt entry gt lt entry gt long line lt entry gt lt row gt lt row gt lt entryothermeaning lt entry gt cb Gs more longline lt entry gt lt row gt lt row gt lt entrytestmeaning lt entry gt lt entry gt Lo000000000000000000000000000000000000000000000000000000000000000000ng line but i mean really lo lt entry gt lt row gt En plus si vous connaissez quelque peu XML crivez un script BEGIN et END pour compl ter la table Ou faites le en HTML Chapitre 7 Les instructions de condition Table des mati res 1 Introduction de if 1 1 G n ralit 1 2 Applications simples de if 2 L emploi avanc de if
211. rofile C est le fichier de configuration principal pour d finir l environnement personnel Dans ce fichier l utilisateur peut ajouter des options de configuration suppl mentaires ou changer le param trage par d faut franky gt cat bash profile d dd SDS Sd D D ES dd D 2 DS dd D 2 dd SDS Sd d d 2 D Sd d d 2 ES Sd 2 22 Sd D D 5 DS d 2 25 dd S 2 5 _ bash profile file e He eH Ex cut depuis le Shell Bash quand vous vous loggez HAHAHAHAHAHA 2 DS did D 2 DS dd SD Sd dd 22 Sd d 5 2 Sd S 22 DS d QD DS Sd 2 25 dd 2 2 5 source bashrc source bash login case 0S in IRIX stty sane dec stty erase SunOS stty erase 55 stty sane LA esac Cet utilisateur configure le caract re retour arri re selon le syst me d exploitation sur lequel il se connecte part a bashrc et bash_ Login sont lus 1 2 2 bash login Ce fichier contient des ordres de param trage sp cifiques qui sont normalement ex cut s seulement quand vous vous connectez au syst me Dans l exemple nous l utilisons pour d finir la valeur de umask et pour afficher une liste des utilisateurs connect s Cet utilisateur obtient aussi le calendrier du mois HARHHHEAAAAAAEAAAAAAHEAAAAAAEEAAAAAAHAAAAAAAEEAARAAHEAAAAAAEEAAAAAAAAEE Bash login file instructions a ex cuter par le Shell Bash l tape de connection sourced from bash profile TEETH HEHE A EE EE EEE EE 2 2 Sd Sd 2 2 5 Sd 0 gt
212. ropri e 5 Exercices Voici quelques id es pour vous lancer dans l criture de scripts if 1 Employez un bloc if then elif else qui affiche les informations du mois courant Le script devrait afficher le nombre de jours du mois et donner des informations sur l ann e bissextile si le mois courant est f vrier 2 Faire la m me chose avec une instruction case et une variante de l usage de la commande date 3 Modifier etc profile afin d tre accueilli par un message personnalis quand vous vous connectez au syst me en tant que root 4 Modifier le script leaptest sh dans Section 2 4 Op rations bool ennes afin qu il n cessite un param tre l ann e Tester que exactement un seul param tre est pass 5 Ecrire un script appel whichdaemon sh qui v rifie que les d mons httpd et init sont lanc s sur votre syst me Si un httpd est lanc le script devrait afficher un message comme Cette machine fait tourner un serveur WEB Employez ps pour contr ler les processus 6 crire un script qui fait la sauvegarde de votre r pertoire racine sur une machine distante en utilisant scp Le script devrait crire son rapport dans un fichier journal par exemple Vog homebackup log Si vous n avez pas de seconde machine pour y copier la sauvegarde se servir de scp pour tester la copie sur la machine locale Ceci n cessite des cl s SSH entre 2 h tes ou sinon vous devez fournir un mot de passe La cr ation de cl s S
213. rs chemins alors que root se voit adjoindre quelques r pertoires suppl mentaires contenant les commandes syst mes Apr s avoir t utilis e la fonction est supprim e par unset 2 3 Sauvegarde distance L exemple suivant est l un de ceux que j utilise pour faire mes sauvegardes des fichiers de mes livres Il emploie des cl s SSH pour effectuer la connection distance Deux fonctions sont d finies buplinux et bupbash qui produisent chacune un fichier tar qui est alors compress et envoy vers le serveur distant Ensuite la copie locale est supprim e Le dimanche seul bupbash est ex cut bin bash LOGFILE nethome tille log backupscript log echo Starting backups for date gt gt LOGFILE gen DIR nethome tille xml db linux basics TAR Linux tar BZIP TAR bz2 SERVER rincewind RDIR var www intra tille html training cd DIR tar cf TAR src xml src images png src images eps echo Compressing TAR gt gt LOGFILE bzip2 TAR echo done gt gt LOGFILE echo Copying to SERVER gt gt LOGFILE scp BZIP SERVER RDIR gt dev null 2 gt amp 1 echo done gt gt LOGFILE echo e Done backing up Linux course nSource files PNG and EPS images nRubbish removed gt gt LOGFI rm BZIP bupbash DIR nethome tille xml db TAR Bash tar BZIP TAR bz2 FILES bash programming SERVER rincewind RDIR va
214. s bin bash Le script ouvre 4 fen tres de terminal i 0 while i lt 4 do xterm amp i 1i 1 done 2 2 2 Des boucles while imbriqu es L exemple ci dessous a t crit pour copier des images qui sont prises par une WEBcam vers un r pertoire WEB Toute les 5 minutes une image est prise Toute les heures un nouveau r pertoire est cr pour contenir les images de cette heure Chaque jour un nouveau r pertoire est cr contenant 24 sous r pertoires Le script s ex cute en t che de fond bin bash Ce script copie les fichiers de mon r pertoire racine dans le r pertoire du serveur WEB Utilisez des cl s scp et SSH pour un r pertoire distant Un nouveau r pertoire est cr a chaque heure PICSDIR home carol pics WEBDIR var www carol webcam while true do ATE date Y m d HOUR date H mkdir WEBDIR DATE while HOUR ne 00 J do DESTDIR WEBDIR DATE HOUR mkdir DESTDIR mv PICDIR jpg DESTDIR sleep 3600 HOUR date H done done Notez l emploi de l instruction true Il signifie continuer l ex cution jusqu une interruption forc e avec kill ou Ctrl C Ce petit script peut tre utilis pour des tests de simulation il g n re des fichiers bin bash Ce script g n re un fichier toute les 5 minutes while true do touch pic date s jpg sleep 300 done Notez l emploi de la commande date pour g n rer toute sorte de
215. s 1 1 2 Les commandes qui suivent l instruction then La liste CONSEQUENT COMMANDS qui suit l instruction then peut tre toute commande UNIX valide tout programme ex cutable tout script Shell ex cutable ou toute instruction Shell l exception de fi Il est important de se rappeler que then et fi sont consid r s comme des instructions part enti re dans le Shell De ce fait quand elles sont fournies la ligne de commande elles sont s par es par un point virgule Dans un script les diff rentes parties de l instruction if sont d ordinaire bien s par es Ci dessous quelques exemples 1 1 3 Contr ler des fichiers Le premier exemple contr le l existence d un fichier anny gt cat msgcheck sh bin bash echo Ce script v rifie si le fichier des messages existe echo V rification if f var log messages then echo var log messages existe fi echo echo fait anny gt msgcheck sh Ce script v rifie si le fichier des messages existe V rification var log messages existe fait 1 1 4 V rifier des options Shell A ajouter dans vos fichier de configuration Bash Ces lignes affichent un message si l option noclobber option est positionn e if o noclobber then echo Vos fichiers sont prot g s contre une r criture accidentelle du fait d une redirection fi L environnement L exemple ci dessus fonctionnera si il est soumis la ligne de co
216. s alias cdrecord cdrecord dev 0 0 0 speed 8 alias ss ssh octarine alias 1ll ls la param trage de mozilla MOZILLA FIVE HOME usr lib mozilla LD LIBRARY PATH usr lib mozilla usr lib mozilla plugins MOZ DIST BIN usr lib mozilla MOZ PROGRAM usr lib mozilla mozilla bin export MOZILLA FIVE HOME LD LIBRARY PATH MOZ DIST BIN MOZ PROGRAM param trage des fontes alias xt xterm bg black fg white amp param trage de BitchX export IRCNAME frnk La fin franky gt Plus d exemples se trouvent dans le paquetage Bash Rappelez vous que les fichiers exemples peuvent n cessiter des adaptations afin de les faire fonctionner dans votre environnement Les alias sont trait s la Section 5 Alias 1 2 5 bash logout Ce fichier contient des instructions sp cifiques pour la proc dure de d connexion Dans cet exemple la fen tre du terminal est effac e la d connexion C est utile pour les connections distance qui de cette fa on laisse une fen tre vide apr s la d connexion franky gt cat bash_logout JAB a Bash logout file instructions ex cut es par le Shell Bash la d connexion HHHHHHHHHHHHHHHHHRRRRRRR EERE HH clear franky gt 1 3 Modification des fichiers de configuration du Shell Quand vous modifiez n importe lequel des fichiers ci dessus les utilisateurs doivent soit se reconnecter soit ex cuter source le fichier modifi afin que prenne
217. s capturer les signaux envoy s par l utilisateur Chapitre 1 Bash et scripts Bash Table des mati res 1 Les langages de contr le Shell courants 1 1 Les fonctions du Shell en g n ral 1 2 Types de Shell 2 Avantages du Bourne Again SHell 2 1 Bash est le Shell GNU 2 2 Fonctionnalit s offertes seulement par le Bash 3 L ex cution de commandes 3 1 G n ralit 3 2 Les commandes int gr es du Shell 3 3 Ex cuter un programme dans un script 4 Construction de blocs 4 1 Construction de blocs Shell 5 Ecrire de bons scripts 5 1 Caract ristiques d un bon script 5 2 Structure 5 3 Terminologie 5 4 Un mot sur l ordre et la logique 5 5 Un exemple Bash script mysystem sh 5 6 Exemple init script NdT d initialisation 6 R sum 7 Exercices R sum Dans ce module d introduction nous D crivons quelques Shell courants e Mettons en avant les avantages et possibilit s du Bash GNU D crivons les blocs de constructions du Shell e Abordons les fichiers d initialisation du Bash e Voyons comment le Shell ex cute les commandes Examinons quelques exemples simples de scripts 1 Les langages de contr le Shell courants 1 1 Les fonctions du Shell en g n ral Le Shell UNIX interpr te les commandes de l utilisateur qui sont soit directement entr es par celui ci ou qui peuvent tre lues depuis un fichier appel un script shell ou programme Ces scripts sont interpr t s donc non compil
218. s du Shell trouvent des erreurs de redirection cela n a pas pour effet de quitter le Shell Les commandes int gr es utilis es selon le mode POSIX et qui renvoient des erreurs n ont pas pour effet de quitter le Shell Les commandes int gr es sont list es la Section 3 2 Les commandes int gr es du Shell Un chec de exec ne fait pas quitter le Shell Des erreurs produites par l analyse de syntaxe ne font pas quitter le Shell Le contr le simple de nom des arguments de la commande int gr e cd est activ par d faut La sortie automatique apr s le laps de temps sp cifi par la variable TMOUT est activ e Plus d informations e Section 2 Variables e Section 6 Plus d options Bash e Voir Chapitre 12 Trapper les signaux au sujet des signaux Section 4 Le processus d expansion de Shell aborde divers processus d expansion sur une commande saisie 2 2 4 Les conditions Les expressions conditionnelles sont utilis es dans la commande compos e et par les int gr es test et Les expressions peuvent tre unaire ou binaire Une expression unaire est souvent utilis e pour examiner le statut d un fichier Vous avez seulement besoin d un objet exemple un fichier pour tester une condition dessus Il y a aussi des op rateurs de comparaison de textes et de nombres ils sont binaires puisqu ils requi rent 2 objets pour effectuer le test Si l option FICHIER d une expression est d
219. s expressions r guli res 2 2 Grep et les expressions r guli res Si vous n tes pas sous Linux Nous utilisons GNU grep dans ces exemples parce qu il admet les expressions r guli res tendues GNU grep se trouve par d faut sur les syst mes Linux Si vous travaillez sur un syst me propri taire v rifiez avec l option V la version utilis e GNU grep peut tre t l charg depuis http gnu org directory 2 2 1 Ancres de lignes et de mots A partir de l exemple pr c dent nous voulons maintenant n afficher que les lignes commen ant par la cha ne root cathy gt grep root etc passwd root x 0 0 root root bin bash Si nous voulons voir quels comptes n ont aucun Shell de d fini nous cherchons les lignes finissant 2 par cathy gt grep etc passwd news x 9 13 news var spool news Pour v rifier que PATH est export dans bashrc d abord s lectionner les lignes export puis chercher les lignes commen ant avec la cha ne PATH afin de ne pas afficher MANPATH et autres cha nes possibles cathy gt grep export bashrc grep lt PATH export PATH bin usr lib mh lib usr bin usr local bin usr ucb usr dbin PATH Pareillement gt cherche la fin d un mot Si vous voulez trouver une cha ne qui est un mot isol entre espaces le mieux est d employer w comme dans cet exemple o nous affichons des informations de la partition root cathy g
220. s noms de scripts souvent finissent par sh mais m me dans ce cas il peut y avoir un autre script dans votre syst me qui porte le m me nom V rifier avec which whereis et les autres commandes qui renvoyent des informations sur les programmes et les fichiers which a script name whereis script name locate script _ name 1 2 scripti sh Dans cet exemple nous employons l int gr e echo pour informer l utilisateur sur ce qui va se d rouler avant que la t che qui cr ra le r sultat s ex cute Il est fortement recommand d informer les utilisateurs sur ce que fait le script de fa on viter qu ils deviennent anxieux parce que le script ne fait rien Nous reviendrons sur le sujet de la notification aux utilisateurs au Chapitre 8 Ecrire des scripts interactifs Figure 2 1 scripti sh V scripti sh GVIM Ams amp G bin bash clear echo The script starts now echo Hi USER echi echo I will now fetch you a list of connected users echo w echo echo I m setting two variables now COLOUR black VALUE 9 echo This is a string COLOUR echo And this is a number VALUE echo echo I m giving you back your prompt now echo Ecrivez ce script Ce peut tre une bonne id e de cr er un r pertoire scripts pour ranger vos scripts Ajoutez le r pertoire au contenu de la variable PATH variable export PATH PATH scripts Si vous tes to
221. s ou portion de texte contenant un ou des patrons Quand on trouve dans la ligne un des patrons des actions sont effectu es sur cette ligne Un programme en awk est diff rent de la plupart des programmes en d autres langages parce que un programme awk est construit sur les donn es vous d crivez les donn es que vous voulez traiter puis le traitement a effectuer si elles sont trouv es La plupart des langages sont proc duraux Vous devez d crire en d tail chacune des tapes du processus En travaillant avec des langages proc duraux il est g n ralement plus difficile de clairement d crire les donn es que le programme traitera Pour cette raison un programme awk est souvent agr ablement facile lire et crire Qu est ce que cela veut dire dans les ann es 1970 3 programmeurs se sont joints pour cr er le langage Leurs noms taient Aho Kernighan et Weinberger Ils prirent la premiere lettre de chacun de leur nom pour nommer ce langage Donc le nom du langage aurait aussi bien pu tre wak 1 2 Commandes Gawk Quand vous lancez awk vous sp cifiez un programme awk qui indique 4 awk quoi faire Le programme consiste en une s rie de r gles Il peut aussi contenir des d finitions de fonctions de boucles des conditions et autres possibilit s que nous ignorerons pour l instant Chaque r gle sp cifie un patron cibler et une action effectuer sur les cibles trouv es Il y a plusieurs
222. s pour la confidentialit et la s curit de par leur mode d acc s parce que des donn es non crypt es parcourent le r seau Si vous avez le besoin d outils distance transfert de fichiers et autres utilisez une version de Secure SHell c est dire SSH disponible gratuitement ici http www openssh org Divers programmes client sont disponibles aussi pour les syst mes non UNIX consulter votre miroir de logiciels 2 2 2 7 Invoqu alors que UID est diff rent de EUID Aucun fichier de d marrage n est lu dans ce cas 2 2 3 Shell interactif 2 2 3 1 Qu est ce qu un Shell interactif Un Shell interactif g n ralement lit et crit depuis et sur un terminal utilisateur les flux d entr e et de sortie sont dirig s vers le terminal Le mode interactif de Bash est activ quand la commande bash est invoqu e sans les options rendant inactif et sauf avec l option qui permet de prendre l entr e depuis une cha ne de caract res ou quand le Shell est invoqu de fa on lire l entr e standard ce qui autorise les param tres positionnels voir Chapitre 3 L environnement du Bash 2 2 3 2 Ce Shell est il interactif Test en examinant la variable sp ciale il contient un i quand le Shell est interactif eddy gt echo himBH Dans un Shell non interactif l invite PS1 n est pas param tr e 2 2 3 3 Le comportement d un Shell interactif Diff rences dans le mode interactif Bash lit les fichiers de d
223. s qui suivent le tilde sont consid r s comme un nom de connection possible Si ce nom de connection est la cha ne nulle le tilde est remplac par la valeur de la variable Shell HOME Si HOME n est pas d fini le r pertoire racine de l utilisateur ex cutant le Shell est utilis la place Sinon le pr fixe tilde est remplac par le r pertoire racine associ au nom de connection sp cifi Si le pr fixe tilde est la valeur de la variable Shell Pwo remplace le pr fixe tilde Si le pr fixe tilde est la valeur de la variable Shell oLDPuD si d finie s y substitue Si les caract res suivant le tilde dans le pr fixe consistent en un nombre N optionnellement pr fix par ou le pr fixe tilde est remplac par l l ment correspondant dans la pile de r pertoire comme il serait affich par l int gr e dirs invoqu e avec comme argument le caract re suivant le tilde dans le pr fixe tilde Si le pr fixe tilde sans le tilde consiste en un nombre sans signe ou est implicite Si le nom de connection est invalide ou si l expansion de tilde choue le mot est laiss tel quel Chaque assignation de variable donne lieu un contr le sur la pr sence d un pr fixe tilde non prot g qui suit imm diatement un ou un Dans ce cas l expansion du tilde se produit Par cons quent on peut utiliser un nom de fichier avec tilde dans PATH MAILPATH et CDPATH et
224. s un script awk pour un traitement en t che de fond Autres choses que vous devriez savoir propos de awk Le langage reste tr s r pandu sur UNIX et ses clones mais pour ex cuter des t ches similaires Perl est maintenant plus souvent employ Cependant awk a une courbe d apprentissage plus rapide c est dire que vous apprenez en peu de temps En d autres mots Perl est plus difficile apprendre Les deux Perl et awk se partagent la r putation d tre incompr hensible m me pour les auteurs de programmes dans ces langages Donc annotez votre code 5 Exercices Il y a quelques exemples concret o awk peut tre pratique 1 Pour le premier exercice l entr e sont les lignes de la forme suivante Username Firstname Lastname Telephone number Faire un script awk qui convertit une telle ligne en un enregistrement LDAP ce format dn uid Username dc example dc com cn Firstname Lastname sn Lastname telephoneNumber Telephone number Cr er un fichier contenant quelques enregistrements de test et v rifiez 2 Cr er un script Bash utilisant awk et les commandes standard UNIX qui affiche les 3 utilisateurs les plus gros consommateurs d espaces disques dans le r pertoire home si il ne situe pas dans une partition distincte faire le script pour la partition celle ci existe sur tout systeme UNIX D abord ex cutez les commandes depuis la ligne de commande Puis mettez les dans un script Le sc
225. s utilisateurs connect s WwW 5 00pm up 18 days 7 00 4 users load average 0 79 0 39 0 33 SER TTY FROM LOGIN IDLE JCPU PCPU WHAT root tty2 Sat 2pm 5 47m 0 24s 0 05s bash willy 0 Sat 2pm 0 00s Sat 2pm 54 02 36 885 36 885 BitchX willyke Sat 2pm 54 02 0 13s 0 06s usr bin screen willy pts 3 willy pts 2 set x Je d finis 2 variables maintenant Ceci est une cha ne Et ceci est un nombre Je vous redonne la main maintenant willy scripts gt On peut basculer du mode activ a d sactiv autant de fois que l on veut dans le script La table ci dessous donne un aper u d autres options Bash utiles Tableau 2 1 Aper u des options de d bug Syntaxe abr g e Syntaxe longue Effet set f set o noglob D sactive la g n ration de noms de fichiers partir des m tacaract res globbing set v set o verbose Affiche les lignes fournies au Shell telles qu elles ont t lues set x set o xtrace Affiche la trace des commandes avant leur ex cution Le signe est utilis pour activer une option Shell et le pour la d sactiver Ne vous faites pas avoir Dans l exemple qui suit nous montrons l usage de ces options depuis la ligne de commande willy scripts gt set v willy scripts gt ls ls commented scripts sh script1 sh willy scripts gt set v set v willy scripts gt ls commented scripts sh script1 sh willy scripts gt set f willy scripts gt ls tls
226. scripts Bash Les bases de Bash pourquoi Bash est si bon construction de blocs premi res consignes d criture de bons scripts e Chapitre 2 Ecrire et corriger des scripts Les bases du script crire et d bugger e Chapitre 3 L environnement du Bash L environnement Bash les fichiers d initialisation les variables les expressions litt rales l ordre d expansion les alias les options e Chapitre 4 Expressions r guli res Expressions r guli res une introduction e Chapitres L diteur de flot GNU sed Sed une introduction l diteur ligne ligne e Chapitre 6 Le langage de programmation GNU awk Awk introduction awk le langage de progammation Chapitre 7 Les instructions de condition Les instructions conditionnelles constructions utilis es en Bash pour tester des conditions e Chapitre 8 Ecrire des scripts interactifs Les scripts interactifs faire des scripts conviviaux int grer la saisie de l utilisateur e Chapitre 9 T ches r p titives Ex cuter des commandes r cursivement constructions utilis es en Bash pour automatiser l ex cution de commandes Chapitre 10 Un peu plus sur les variables Variables complexes sp cifier des types de variables introduction aux tableaux de variables op rations sur variables e Chapitre 11 Fonctions Fonctions une introduction e Chapitre 12 Trapper les signaux Capturer des signaux introduction aux signaux de processu
227. se retirer du fichier de Michel Vous pouvez palier ce d faut en utilisant des acc s privil gi s au fichier de script voir SUID et SGID dans le guide d introduction Linux 2 3 Redirection et descripteurs de fichiers 2 3 1 G n ralit Comme vous avez pu le r aliser la suite d une utilisation rudimentaire du Shell l entr e et la sortie d une commande peuvent tre redirig es avant son ex cution gr ce la notation appropri e les op rateurs de redirection interpr t e par le Shell La redirection peut aussi tre employ e pour ouvrir et fermer des fichiers dans l environnement d ex cution du Shell La redirection peut aussi se produire dans le script de sorte qu il puisse recevoir son entr e depuis un fichier par exemple ou qu il puisse envoyer les r sultats vers un fichier Ult rieurement l utilisateur peut visualiser le fichier de r sultat ou il peut tre exploit en entr e par un autre script Les fichiers d entr e et de sortie sont d sign s par des entiers indicateurs qui rep rent tout les fichiers ouverts d un processus donn Ces valeurs num riques sont connues sous le nom de descripteurs de fichiers Les descripteurs les plus courant sont stdin stdout et stderr avec les num ros 0 1 et 2 respectivement Ces num ros et leur entit respective sont r serv s Bash peut aussi consid rer des ports TCP ou UDP sur les h tes du r seau en tant que descripteur L affichage ci dessous montre co
228. son l tudier d s que vous avez 5 minutes Annexe B GNU Free Documentation License Table des mati res 1 Preamble 2 Applicability and definitions 3 Verbatim copying 4 Copying in quantity 5 Modifications 6 Combining documents 7 Collections of documents 8 Aggregation with independent works 9 Translation 10 Termination 11 Future revisions of this license 12 How to use this License for your documents Version 1 1 March 2000 Copyright C 2000 Free Software Foundation Inc 59 Temple Place Suite 330 Boston MA 02111 1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document but changing it is not allowed 1 Preamble The purpose of this License is to make a manual textbook or other written document free in the sense of freedom to assure everyone the effective freedom to copy and redistribute it with or without modifying it either commercially or noncommercially Secondarily this License preserves for the author and publisher a way to get credit for their work while not being considered responsible for modifications made by others This License is a kind of copyleft which means that derivative works of the document must themselves be free in the same sense It complements the GNU General Public License which is a copyleft license designed for free software We have designed this License in order to use it for manuals for free software because free software n
229. sous bob in echo ARRAY one two one three one four bob in echo ARRAY one two three four bob in echo ARRAY t one wo one hree one four bob in echo ARRAY t one wo one hree one four bob in echo ARRAY t one one one four L effet oppos est obtenu avec et comme dans l exemple suivant WORD devrait correspondre une portion en fin de cha ne bob in echo STRING thisisaverylongname bob in echo STRING name thisisaverylong 3 3 3 Remplacer des parties de noms de variables Ceci est fait avec la syntaxe suivante VAR PATRON CHAINE ou l option VAR PATRON CHAINE syntax La premi re forme remplace seulement la premi re correspondance la seconde remplace toutes les occurrences de PATRON par CHAINE bob in echo STRING name string thisisaverylongstring Vous trouverez plus de d tails dans les pages info de Bash 4 R sum Normalement une variable peut stocker tout type de donn e moins qu elles soient d clar es explicitement Les variables constantes sont d clar es avec la commande int gr e readonly Un tableau stocke un ensemble de variables Si un type de donn e est d clar alors tous les l ments du tableau seront consid r s comme contenant seulement ce type de donn e Les fonctionnalit s du Bash permettent la substitution et la transformation de variables au vol Les op rations standards in
230. ste de r pertoires s par s par deux points dans lesquels le Shell recherche les commandes La principale cha ne d invite La valeur par d faut est s v La cha ne alternative d invite La valeur par d faut est gt Ces variables sont d finies ou utilis es par Bash mais les autres Shells normalement ne les traitent pas sp cialement Tableau 3 2 Les variables r serv es de Bash Nom de variable auto_resume BASH D finition Cette variable configure la fa on dont le Shell interpr te la saisie la ligne de commande comme tant des ordres de contr le de travaux Le chemin complet o se trouve l ex cutable du Bash actif Nom de variable BASH ENV BASH_ VERSION BASH_VERSINFO COLUMNS COMP_CWORD COMP LINE COMP POINT COMP_ WORDS COMPREPLY DIRSTACK EUID FCEDIT FIGNORE FUNCNAME GLOBIGNORE GROUPS histchars HISTCMD HISTCONTROL HISTFILE HISTFILESIZE D finition Si cette variable est d finie quand Bash est invoqu pour ex cuter un script Shell sa valeur est interpr t e expansion et utilis e comme nom de fichier de d marrage lire avant d ex cuter le script Le num ro de version du Bash actif Un tableau en lecture dont chaque l ment m morise un niveau de la version du Bash actif Utilis par l int gr e select pour d terminer la largeur du terminal lors de l affichage de listes de s lection Automatiquement d fi
231. swd Modifie le mot de passe pdf2ps Transpose du PDF Ghostscript en PostScript perl Practical Extraction and Report Language NdT langage de programmation ps Page par l entremise d une sortie texte ping Envoie une requ te d cho un h te pr Convertit des fichiers textes en vu d impression printenv Affiche tout ou partie de l environnement procmail Processeur autonome de mails ps Affiche l tat des processus pstree Affiche un arbre des processus pwd Affiche le r pertoire courant Q quota Affiche l tat d utilisation des disques et leur limite R rcp Copie distance pas s r rdesktop Client du protocole de bureau distance reboot Arr te et red marre le syst me renice Modifie la priorit d un processus qui s ex cute rlogin Connection distance Interface utilisateur du protocole TELNET peu s r rm Supprime un fichier rmdir Supprime un r pertoire rpm Le gestionnaire de paquets RPM rsh Shell distance peu s r scp Copie distance s curis e screen Un gestionnaire d cran mulation VT100 set Affiche d clare ou d finit une variable setterm D termine les attributs du terminal sftp ftp s curis cryptage sh Ouvre un Shell standard shutdown Arr te le syst me sleep Attend un temps donn slocate Version s curis e du Locate GNU slrnn Client Usenet en mode texte snort Outil de d tection d intrus
232. syntaxique a marqu comme assignation de variables pr c dant le nom de commande et comme redirection sont conserv s pour y faire r f rence ult rieurement Les mots qui ne sont pas des assignations de variables ou des redirections sont analys s le premier mot restant apr s cette analyse est consid r comme tant le nom de la commande et le reste ses arguments Alors les op rations de redirections sont effectu es puis les valeurs assign es aux variables sont interpr t es expansion Si le r sultat ne donne aucun nom de commande les variables sont affect es dans l environnement en cours Une part importante du travail du Shell est de localiser les commandes Bash le fait de cette fa on Recherche du caract re slash dans la commande Si aucun d abord parcourir la liste de fonctions pour voir si elle contient le nom de commande cherch e Si la commande n est pas une fonction la chercher dans la liste des int gr es e Si la commande n est ni une fonction ni une int gr e la chercher dans les r pertoires list s dans PATH Bash se sert d une table de hachage zone de stockage en m moire pour r cup rer le chemin complet des ex cutables de sorte qu une recherche extensive est vit e e Si la recherche est un chec Bash affiche un message d erreur et retourne le statut d ex cution 127 e Si la recherche donne un r sultat ou si la commande contient des slashs le Shell ex cute la commande dans un environne
233. t grep w etc fstab LABEL ext3 defaults 11 Si cette option est absente toutes les lignes de la table du syst me de fichiers seront affich es 2 2 2 Classes de caract res Une expression entre crochet est une liste de caract re entre et Elle fera correspondre tout caract re pr sent dans cette liste si le premier caract re de la liste est le caret alors elle fera correspondre tout caract re NON pr sent dans la liste Par exemple l expression r guli re 0123456789 rep re n importe quelle chiffre Dans une expression entre crochet une expression intervalle consiste en 2 caract res s par s par un tiret Elle rep re tout caract re qui se retrouve dans l intervalle des 2 caract res inclus employant pour ce faire la s quence du jeux de caract res d finit localement Par exemple dans le jeux particulier par d faut en C a d est quivalent abcd la plupart des jeux sont ordonn s selon l ordre du dictionnaire et dans ces jeux a d est classiquement pas quivalent abcd cela peut tre quivalent aBbCcDd par exemple Pour obtenir l interpr tation classique des expressions entre crochets vous pouvez employer le jeux de C en d clarant la variable d environnement LC ALL la valeur C Pour finir des jeux de caract res nomm s sont pr d finis dans des expressions entre crochets Voir les pages man ou info de grep pour plus d
234. t Out premier entr premier sorti ou la m thode dev fd de nommage de fichiers ouverts Ca se pr sente sous la forme de lt LIST ou l option gt LIST Le processus LIST est ex cut avec ses entr es et sorties connect es un tube ou des fichiers dans dev fd Le nom de ce fichier est pass en argument 4 la commande courante comme le r sultat de l expansion Si la forme gt LIST est employ e d crire dans le fichier alimente l entr e de LIST Si la forme lt LIST est employ e le fichier pass en argument devrait tre lu pour obtenir la sortie de LIST Notez qu aucun espace ne doit appara tre entre le signe lt ou gt et la parenth se gauche sinon la construction serait interpr t e comme une redirection Quand la substitution de processus est possible elle est effectu e simultan ment avec l expansion de variable la substitution de commande et l expansion arithm tique Plus de d tails la Section 2 3 Redirection et descripteurs de fichiers 4 8 Le d coupage de mots Le Shell recherche dans le r sultat de l expansion de param tre de la substitution de commande et de l expansion arithm tique des mots qui n ont pas t interpr t s du fait des guillemets Le Shell traite chaque caract re de IFS comme un d limiteur et d coupe le r sultat des autres expressions en mots sur la base de ces caract res Si IFS n est pas d clar ou si il vaut exactement lt space gt lt t
235. ter le nombre d occurrences de cette cha ne Afficher une liste des sous r pertoires de usr share doc contenant des informations au sujet des Shell Combien de fichiers README ces sous r pertoires contiennent ils Ne pas prendre en compte les fichiers de la forme README a string Faire une liste des fichiers du r pertoire racine qui ont chang s moins de 10 heures auparavant en employant grep mais sans prendre les r pertoires Mettre ces commandes dans un script Shell qui g n rera un r sultat lisible Pouvez vous trouver une alternative we 1 avec grep Avec la table des fichiers du syst me etc fstab par exemple lister les disques locaux Faire un script qui contr le si un utilisateur appara t dans etc passwd Pour cette fois ci vous pouvez sp cifier le nom dans le script vous n tes pas tenu de travailler avec des param tres et des conditions ce stade Afficher les fichiers de configuration de etc qui contiennent des chiffres dans leur nom Chapitre 5 L diteur de flot GNU sed Table des mati res 1 Introduction 1 1 Qu est ce que sed 1 2 commandes sed 2 Op rations d dition de modification p 2 1 Afficher les lignes contenant un patron 2 2 Exclure les lignes contenant le patron 2 3 Intervalle de lignes 2 4 Trouver et remplacer avec sed 3 L usage en mode diff r de sed 3 1 Lire des commandes sed depuis un fichier 3 2 Ecrire des fichiers de r sultat 4 R s
236. tion de modification 2 1 Afficher les lignes contenant un patron Vous pouvez le faire avec grep bien s r mais vous ne pouvez faire un chercher remplacer avec cette commande Ceci est juste un d but Voici notre fichier texte d exemple sandy gt cat n exemple 1 This is the first line of an example text 2 It is a text with erors 3 Lots of erors 4 So much erors all these erors are making me sick 5 This is a line not containing any errors 6 This is the last line sandy gt Nous voulons que sed trouve toutes les lignes contenant le patron cibl dans ce cas erors Nous employons le p pour obtenir le resultat sandy gt sed erors p exemple This is the first line of an example text It is a text with erors It is a text with erors Lots of erors Lots of erors So much erors all these erors are making me sick So much erors all these erors are making me sick This is a line not containing any errors This is the last line sandy gt Comme vous l avez remarqu sed affiche le fichier entier mais les lignes contenant la cible sont affich es 2 fois Ce n est pas ce qu on veut De sorte n afficher que les lignes contenant la cible employez l option n sandy gt sed n erors p exemple It is a text with erors Lots of erors So much erors all these erors are making me sick sandy gt 2 2 Exclure les lignes contenant le patron Nous utilisons le m me exemple de
237. ubstitution arithm tique peut tre incorpor e une autre L valuation d une expression arithm tique est faite en entiers de taille fixe sans contr le de d passement bien que la division par z ro soit d tect e comme une erreur Les op rateurs sont peu pr s les m mes que dans le langage de programmation C Par ordre de priorit d croissante la liste ressemble ceci Tableau 3 4 Op rateurs arithm tiques Op rateur sens VAR et VAR variable post incr ment et post d cr ment VAR et VAR variable pr incr ment et pr d cr ment Set moins et plus let n gation logique et bit bit F4 exponentiation et multiplication division reste et addition soustraction lt lt and gt gt D calage des bits gauche ou droite lt gt lt et gt op rateurs de comparaison et l galit et in galit Op rateur sens amp ET logique OU logique exclusif OU logique amp amp ET logique Il OU logique expr expr expr valuation conditionnelle lt lt gt gt amp etl affectations s parateur entre expressions Les variables Shell sont autoris es comme op randes l expansion est effectu e avant l valuation de l expression Dans une expression les variables Shell peuvent aussi tre r f renc es par le nom sans utiliser la syntaxe d expansion de param tre La valeur d une variable est valu e en tant qu expression
238. um 5 Exercices R sum la fin de ce chapitre vous aurez connaissance des sujets suivants e Qu est ce que sed L usage en mode imm diat de sed Les expressions r guli res et l dition de flot Utiliser des commandes sed dans un script Ceci est une introduction Ces explications sont loin d tre compl tes et certainement pas faites pour tre consid r es comme le manuel utilisateur de sed Ce chapitre est seulement inclus afin de montrer quelques aspects int ressants dans les chapitres suivants et parce que tout utilisateur avanc devrait avoir une connaissance de base de cet diteur Pour plus d informations se r f rer aux pages man et info de sed 1 Introduction 1 1 Qu est ce que sed Un diteur de flot Stream EDitor est utilis pour effectuer des transformations simples sur du texte lu depuis un fichier ou un tube NAT pipe Le r sultat est envoy sur la sortie standard La syntaxe de la commande sed ne sp cifie pas de fichier de sortie mais les r sultats peuvent tre m moris s dans un fichier par le biais de redirection L diteur ne modifie pas le flot d entr e Ce qui distingue sed d autres diteurs tel vi et ed c est sa facult de filtrer le texte qu il obtient par un tube Vous n avez pas interagir avec l diteur pendant qu il travaille c est pourquoi sed est parfois appel un diteur par lot Cette caract ristique vous permet d utiliser des commandes d diti
239. upprimer l alias Is Mettre le r sultat dans un fichier temporaire 2 Faire une liste des fichiers de usr bin qui ont la lettre a en second caract re Mettre le r sultat dans un fichier temporaire 3 Supprimer les 3 premi res lignes de chaque fichier temporaire 4 Afficher sur la sortie standard seulement les lignes contenant le patron an 5 Cr er un fichier contenant les commandes sed pour effectuer les 2 t ches pr c dentes Ajouter une commande suppl mentaire ce fichier qui ajoute une cha ne comme Ceci pourrait avoir quelque chose voir avec man et les pages man dans la ligne pr c dant chaque occurrence de la cha ne man V rifier les r sultats 6 Une liste tendue du r pertoire racine est utilis e en entr e Cr er un fichier stockant les commandes sed qui cherchent les liens symboliques et les fichiers simples Si un fichier est un lien symbolique faire pr c der la ligne de Ceci est un symlink Si le fichier est un fichier simple mettre un message sur la ligne en ajoutant un commentaire du genre lt Ceci est un fichier simple 7 Cr er un script qui affiche les lignes prises dans un fichier contenant des espaces la fin Ce script devrait faire appel un script sed et afficher des informations utiles l utilisateur Chapitre 6 Le langage de programmation GNU awk Table des mati res 1 Commencer avec gawk 1 1 Qu est ce que gawk 1 2 Comma
240. ur vos propres besoins ult rieurs et aussi pour le rendre compr hensible par les autres Mieux vaut avoir trop d explications que pas assez Corriger un script peut tre fait gr ce aux options Shell de d bug Ces options peuvent tre utilis es sur une partie ou sur la totalit du script Ajouter des commandes echo des endroits judicieusement choisis est aussi un bon moyen de traquer l erreur 5 Exercices Cet exercice vous aidera cr er votre premier script 1 Ecrire un script au moyen de votre diteur favori Le script devrait afficher le chemin de votre r pertoire utilisateur et le type de terminal que vous utilisez De plus il montrera tous les services lanc s par le niveau d ex cution 3 de votre syst me tuyau employez HOME TERM et Is etc rc3 d S 2 Ajoutez des commentaires 3 Ajoutez des informations destination de l utilisateur 4 Changer les permissions de sorte que vous puissiez le lancer 5 Ex cuter le script en mode normal puis en mode d bug Il doit s ex cuter sans erreurs 6 Faites que le script fasse une erreur voyez ce qui arrive si la premi re ligne n est pas correcte ou si vous libellez mal une commande ou une variable par exemple d clarez une variable par un nom en majuscule et r f rencez la avec le nom en minuscule Voyez ce que les commentaires de d bug affichent dans ce cas Chapitre 3 L environnement du Bash Table des mati res 1 Les fichiers d initialisation du She
241. ut e apr s chaque commande simple Un signal peut tre aussi sp cifi pour ERR dans ce cas COMMANDES sont ex cut es chaque fois qu une commande simple s ach ve avec un statut diff rent de z ro Notez que ces commandes ne seront pas ex cut es quand le statut d ex cution diff rent de z ro vient d une instruction if ou d une boucle while ou until Aucune ne sera ex cut e si un AND amp amp ou un OR II logique donne un statut d ex cution diff rent de z ro ou quand le code retour d une commande est invers par l op rateur Le statut renvoy par la commande trap elle m me est z ro moins qu un signal invalide ait t sp cifi La commande trap admet des options qui sont document es dans les pages info de Bash Voici un exemple tr s simple r cup rant Ctrl C frapp par l usager ce qui d clenche l affichage d un message Quand vous essayez de tuer ce programme sans sp cifier le signal KILL rien ne se produit bin bash traptest sh trap echo Booh SIGINT SIGTERM echo pid is while Ceci est quivalent while true do sleep 60 Ce script ne fait pas vraiment quelque chose done 2 2 Comment Bash interpr te trap Quand Bash re oit un signal pour lequel un pi ge a t d fini durant l ex cution d une commande le pi ge ne sera mis en oeuvre que une fois que la commande aura termin Quand Bash attend apr s une commande asynchrone via l int gr e wait la r ception d u
242. ut nouveau avec Bash utilisez un diteur de texte qui emploie diff rentes couleurs pour les diff rentes constructions syntaxiques Le code de couleur est une fonction de vim gvim x emacs kwrite et de beaucoup d autres diteurs Se r f rer 4 la documentation de votre diteur lt gt Des invites diff rentes L invite varie au long de ce guide selon l humeur de l auteur Ce qui ressemble plus la vie r elle que l invite classique La seule convention que nous avons gard est que l invite de root finit par 1 3 Ex cuter le script Le script doit avoir les permissions d ex cution pour le propri taire afin d tre ex cutable Quand vous d finissez des permissions contr lez que vous avez obtenu les permissions voulues Une fois fait le script peut tre lanc comme toute autre commande willy scripts gt chmod u x scripti sh willy scripts gt ls l scriptl sh rwWXrw r 1 willy willy 456 Dec 24 17 11 scripti sh willy gt scriptl sh Le script d marre Salut willy Je vais afficher une liste des utilisateurs connect s 3 38pm up 18 days 5 37 4 users load average 0 12 0 22 0 15 USER TTY FROM LOGIN IDLE JCPU PCPU WHAT root tty2 Sat 2pm 4 25m 0 24s 0 05s bash willy 0 Sat 2pm 0 00s willy pts 3 Sat 2pm 3 33m 36 39s 36 39s BitchX willy ir willy pts 2 Sat 2pm 3 33m 0 13s 0 06s usr bin screen Je d finis 2 variables maintenant Ceci est une chaine noir Et ceci est un nom
243. uvent dans les pages Bash info 2 2 9 L invite Bash permet de jouer avec l invite de fa on amusante Voir la section Controlling the Prompt dans les pages info de Bash 2 2 10 Le Shell restreint Quand il est invoqu avec rbash ou avec restricted ou l option r il se produit ceci La commande int gr e cd est indisponible D clarer ou invalider SHELL PATH ENV ou BASH_ ENV n est pas possible Les noms de commande ne peuvent plus comporter de slashes e Un nom de fichier contenant un slash n est pas permis avec l int gr e source L int gr e hash n accepte pas des slashs avec l option p L Import de fonctions au d marrage est d sactiv SHELLOPTS est ignor au d marrage La redirection des r sultats avec gt gt l gt lt gt amp amp gt et gt gt est d sactiv e La commande int gr e exec est indisponible e L option f et d Les options sont d sactiv es pour l int gr e enable e Un chemin par d faut PATH ne peut pas tre sp cifi avec l int gr e command e Annuler le mode restrictif n est pas possible Quand une commande qui appele un script Shell est ex cut e rbash annule toute restriction dans le Shell lanc dans lequel s ex cute ce script Plus d informations Section 2 Variables e Section 6 Plus d options Bash Info Bash gt Basic Shell Features gt Redirections Section 2 3 Redirection et descripteurs de fichiers redi
244. ux read colour echo name age colour gt gt friends Ee Vous tes ajout la liste des amis de Michel Merci beaucoup else echo Vous tes ajout la liste des amis de Michel exit 1 fi fi michel test gt cp friends sh var tmp cd var tmp michel test gt touch friends chmod a w friends michel test gt friends sh Bonjour michel Ce script vous enregistrera dans la base de donn es des amis de Michel Saisir votre nom et appuyer sur ENTREE michel Saisir votre sexe et appuyer sur ENTREE m Vous tes ajout la liste des amis de Michel michel test gt cat friends Remarquez qu aucun affichage n est omis ici Le script enregistre seulement les informations sur les gens qui int ressent Michel mais il avertira toujours que vous avez t ajout la liste sauf si vous y tes d j D autres gens peuvent maintenant lancer le script anny octarine tmp friends sh Bonjour anny Ce script vous enregistrera dans la base de donn es des amis de Michel Saisir votre nom et appuyer sur ENTREE anny Saisir votre sexe et appuyer sur ENTREE f Quel ge avez vous 22 De quelle couleur sont vos cheveux noir Vous tes ajout la liste des amis de Michel Finalement la liste friends ressemble a ceci tille 24 noir anny 22 noir katya 22 blonde Maria 21 noir output omitted Bien s r cette situation n est pas id ale parce que chacun peut renseigner mais pas
245. valeur de ORS ne contient pas de saut de ligne le r sultat global tiendra sur une seule ligne 3 3 Le nombre d enregistrements L int gr NR stocke le nombre d enregistrements qui sont trait s Il est incr ment apr s la lecture d une nouvelle ligne d entr e Vous pouvez l utiliser la fin pour compter le nombre total d enregistrements ou chaque enregistrement de r sultat kelly octarine test gt cat processed awk BEGIN OFS ORS n gt done n print Record number NR t 1 2 END print Number of records processed NR kelly octarine test gt awk f processed awk test Record number 1 recordl datal gt done Record number 2 record2 data2 gt done Number of records processed 2 gt done kelly octarine test gt 3 4 Les variables d finies par l utilisateur En plus des variables int gr es vous pouvez d finir les v tres Quand awk rencontre une r f rence a une variable qui n existe pas qui n est pas pr d finie la variable est cr e et initialis e une cha ne nulle Pour toutes les r f rences suivantes la valeur de la variable est la derni re valeur affect e Une variable peut tre une cha ne ou une valeur num rique Le contenu des champs en entr e peut aussi tre affect une variable Une valeur peut tre assign e directement par l op rateur ou vous pouvez utiliser la valeur courante de la variable combin e avec d autres op rateurs
246. vante pour voir d autres exemples pratiques de l usage tr s r pandu de la commande awk grep awk etc init d 3 6 Le programme printf Pour un contr le du format du r sultat plus pr cis que celui fournit par print employez printf La commande printf peut sp cifier une largeur de champs pour chaque l ment de m me que divers choix de formatage des nombres tel que la base de calcul consid rer si il faut afficher un exposant si le signe est afficher et combien de chiffres afficher apr s la virgule Ceci est fait en ajoutant une cha ne appel e cha ne de formatage qui contr le comment et o afficher les autres arguments La syntaxe est la m me que celle de l instruction du langage C printf voir votre guide d instruction C Les pages info de gawk contiennent plein d explications 4 R sum L utilitaire gawk interpr te un langage de programmation but sp cial prenant en charge les travaux de reformatage de donn es avec seulement quelques lignes de code C est une version libre de la commande UNIX awk Cet outil lit les lignes de donn es entr es et peut ais ment rep rer le colonnage du r sultat Le programme print est le plus courant pour filtrer et formater des champs d finis La d claration de variable au coup par coup est directe et permet des sommations simples des statistiques et autres op rations sur le flot en entr e trait Les variables et les commandes peuvent tre ins r es dan
247. ve les diff rences entre 2 fichiers dig Envoie des paquets de requ te de nom de domaines aux serveurs de noms dmesg Affiche et contr le le tampon en anneau du noyau du Estime l utilisation de l espace des fichiers E echo Affiche une ligne de texte ediff le Diff du traducteur anglais egrep grep tendu eject D monte et jecte les m dias amovibles emacs Lance l diteur Emacs exec Invoque des sous processus exit Quitte le Shell courant export Ajoute des fonctions l environnement du Shell F fax2ps Converti un facsimile TIFF au format PostScript fdformat Formate une disquette fdisk Manipulation de la table des partitions sous Linux fetchmail R cup re le courrier depuis un serveur POP IMAP ETRN ou compatible ODMR fg Ram ne un travail en ex cution sur le premier plan file D termine le type de fichier find Cherche des fichiers formail re formate les courriels fortune Affiche au hasard un adage suppos rendre l espoir ftp Service de transfert de fichiers peu s r sauf si un compte anonyme est utilis G galeon Navigateur graphique gdm Le gestionnaire d affichage Gnome min a getty Contr le les p riph riques console gimp Programme de manipulation d image grep Affiche les lignes trouv es selon un certain patron grub Le Shell grub Un visionneur de PDF et PostScript gzip Comprime ou extrait des fichiers H halt Arr te le syst
248. vec l instruction trap Certains programmes ignorent les signaux Le seul signal qu aucun programme ne peut ignorer est KILL 4 Exercices Quelques exemples 1 Ecrire un script qui crit une image de d marrage syst me sur une disquette avec l outil dd Si l utilisateur essaye d interrompre avec Ctrl C afficher un message disant que cette action rendra la disquette inutilisable 2 Ecrire un script qui automatise l installation d un paquetage tiers de votre choix Le paquetage doit tre t l charg par INTERNET II doit tre d compress d sarchiv et compil si ces actions sont appropri es Seule l op ration d installation du paquetage ne devrait pas tre interruptible Annexe A Possibilit s du Shell Table des mati res 1 Fonctionnalit s courantes 2 Fonctionnalit s sp cifiques R sum Ce document donne une vue globale des possibilit s courantes d un Shell et des sp cificit s possibles 1 Fonctionnalit s courantes Les fonctionnalit s suivantes sont standard dans tout Shell Notez que les commandes stop suspend jobs bg et fg sont disponibles seulement sur les syst mes qui permettent le contr le des travaux job control Tableau A 1 Fonctionnalit s courantes du Shell Commande gt gt gt lt lt lt NON woe var o n bg break cd continue echo eval exec fg jobs kill sens Redirige la sortie Ajoute en fin de fichier Rediri
249. w cr er le r pertoire racine de l utilisateur avec les autorisations correctes Ajouter l utilisateur aux groupes secondaires d sir s D finir le mot de passe de cet utilisateur une cha ne connue 5 R crire le script de la Section 2 1 4 Test de l existence d un fichier afin qu il lise son entr e depuis la saisie utilisateur plut t que du premier param tre Chapitre 9 T ches r p titives Table des mati res 1 La boucle loop 1 1 Comment a marche 1 2 Exemples 2 La boucle while 2 1 Qu est ce que c est 2 2 Exemples 3 La boucle until 3 1 Qu est ce que c est 3 2 Exemple 4 Redirection d entr e sortie et boucles 4 1 Redirection des entr es 4 2 Redirection des sorties 5 Break et continue 5 1 L int gr e break 5 2 L int gr e continue 5 3 Exemples 6 Faire des menus avec l int gr e select 6 1 G n ralit 6 2 Sous menus 7 L int gr e shift 7 1 Qu est ce qu elle fait 7 2 Exemples 8 R sum 9 Exercices R sum la fin de ce chapitre vous serez capable de Ecrire des boucles for while and until et d cider quelle boucle convient quel besoin e Utiliser les int gr es Bash break et continue Ecrire des scripts avec l instruction select e Ecrire des scripts qui admettent un nombre variable de param tres 1 La boucle loop 1 1 Comment a marche La boucle for est la premi re des 3 structures de boucles du Shell Cette boucle autorise la
250. y gt echo date 20021226 franky gt echo date Sun Apr 20 11 22 06 CEST 2003 franky gt echo I d say Go for it I d say Go for it franky gt echo More input gt franky gt echo 3 5 Codage ANSI C Les mots de la forme MOT sont trait s d une mani re sp ciale Le mot se transforme en une cha ne avec le caract re Echap slash invers remplac comme sp cifi dans le standard ANSI C La s quence d chappement du slash invers peut tre trouv e dans la documentation Bash 3 6 Particularit s Une cha ne entre guillemets pr c d e par un sera trait e selon la norme en vigueur Si cette norme est celle de C ou de POSIX le est ignor Si la cha ne est transpos e avec remplacement le r sultat est entre guillemets 4 Le processus d expansion de Shell 4 1 G n ralit Apr s que la commande ait t d compos e en l ments voir la Section 4 1 1 La syntaxe Shell ces l ments ou mots sont interpr t s ou autrement dit r solus Il y a 8 sortes d expansion effectu es lesquelles vont tre trait es dans les sections suivantes dans l ordre o le processus op re Apr s toutes les sortes d expansions effectu es guillemets et apostrophes sont limin s 4 2 L expansion d accolades L expansion d accolade est un m canisme par lequel des cha nes peuvent tre arbitrairement g n r es Les patrons sujets expansion pr
251. year after the last time you distribute an Opaque copy directly or through your agents or retailers of that edition to the public It is requested but not required that you contact the authors of the Document well before redistributing any large number of copies to give them a chance to provide you with an updated version of the Document 5 Modifications You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above provided that you release the Modified Version under precisely this License with the Modified Version filling the role of the Document thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it In addition you must do these things in the Modified Version A Use in the Title Page and on the covers if any a title distinct from that of the Document and from those of previous versions which should if there were any be listed in the History section of the Document You may use the same title as a previous version if the original publisher of that version gives permission B List on the Title Page as authors one or more persons or entities responsible for authorship of the modifications in the Modified Version together with at least five of the principal authors of the Document all of its principal authors if it has less than five C State on the Title page the name of the publisher of the Modified Version as the publisher

Download Pdf Manuals

image

Related Search

Related Contents

FOAMER    ÿþA c t i v e W e b "! U s e r M a n u a l  Bedienungsanleitung KUGELGRILL „TUCSON“    1 高松市上下水道局庁舎機械設備運転管理業務委託特記仕様書 第1  AudioSource 2-Way User's Manual  Harbor Freight Tools 91852 User's Manual  APPLICATION NOTE: APS011  Pioneer MEP-4000 User's Manual  

Copyright © All rights reserved.
DMCA: DMCA_mwitty#outlook.com.