[PDF] Guide avancé décriture des scripts Bash





Previous PDF Next PDF



Une analyse des exercices dalgorithmique et de programmation du

18-Jun-2019 Nous regroupons les divers exercices de brevet contenant de l'informatique selon quatre thèmes principaux : programmes de calcul tracé de ...



mathématiques au cycle 4 - motivation engagement

https://maths.ac-creteil.fr/IMG/pdf/brochure_cyc60fb.pdf



Marc Boullis

seront le logiciel Scratch pour réaliser les exercices proposés. un symbole d'égalité on peut écrire le programme suivant : 2. Pour programmer un ...



apprendre_python3_5.pdf - INFOREF

interpréteur écrit en Java



Untitled

interpréteur écrit en Java



catalogue des cours de premiere et deuxieme annees

17-Sept-2019 Le premier acquis d'apprentissage est évalué à la fois dans l'examen écrit. (au cours duquel les étudiants doivent résoudre un problème de ...



Les recommandations pédagogiques pour lécole primaire

29-May-2019 Enseignement du calcul : un enjeu majeur pour la maîtrise des principaux éléments de mathématiques à l'école primaire ...



Guide avancé décriture des scripts Bash

3Par convention les scripts shell écrits par l'utilisateur



Analyse dimages par méthode de Deep Learning appliquée au

25-Nov-2020 De nos jours les systèmes de vision sont de plus en plus utilisés dans le contexte routier. Ils le sont par exemple pour la vidéo surveillance ...



La conception de jeux vidéo éducatifs : une méthodologie de

02-Jan-2006 Serge Ouaknine et Armand Vaillancourt pour leurs enseignements concernant 1' importance de la démarche artistique. Marco Ramet-. Yalgresy pour ...

Guideavancé d'écrituredesscripts Bash

Uneexploration enprofondeurde l'artdela pro-

grammationshell

MendelCooper

Une exploration en profondeur de l'art de la programmation shell

Version 4.3 - Publié en Mai 2007

Résumé

Ce tutoriel ne suppose aucune connaissance de la programmation de scripts, mais permet une progression rapide vers un niveau in-

termédiaire/avancé d'instructionstout en se plongeant dans de petites astuces du royaume d'UNIX®. Il est utile comme livre,

comme manuel permettant d'étudier seul, et comme référence et source de connaissance sur les techniques de programmation de

scripts. Les exercices et les exemples grandement commentés invitent à une participation active du lecteur avec en tête l'idée que

la seule façon pour vraiment apprendre la programmation de scripts est d'écrire des scripts

Ce livre est adapté à une utilisation en classe en tant qu'introduction générale aux concepts de la programmation.

Dédicace

i

Part1. Introduction.. ... .....................................................................................................................................1

1.Pourquoi laprogrammationShell ?.. ... ... ... ................................................................................................2

2.Lancement avecun" #!». ... ... ... ... ...........................................................................................................4

2.1.Appeler lescript. ... ... .....................................................................................................................7

2.2.Exercices préliminaires.. ... .............................................................................................................7

Part2. Bases.. ... .............................................................................................................................................9

3.Caractères spéciaux.. ... ..........................................................................................................................10

4.Introduction auxvariableset auxparamètres. ... ... ... ... .................................................................................27

4.1.Substitution devariable. ... ... ..........................................................................................................27

4.2.Affectation devariable. ... ... ...........................................................................................................29

4.3.Les variablesBashne sontpastypées ... ... ... ... ... ................................................................................31

4.4.Types spéciauxdevariables ... ... ... ..................................................................................................31

5.Guillemets etapostrophes. ... ... ................................................................................................................36

5.1.Placer lesvariablesentre guillemets.. ... ... ... ......................................................................................36

5.2.Échappement ... ............................................................................................................................37

6.Sortie etcodede sortie(oud'état) ... ... ... ... ... .............................................................................................43

7.Tests ... ...............................................................................................................................................45

7.1.Constructions detests. ... ... .............................................................................................................45

7.2.Opérateurs detestde fichiers.. ... ... ... ...............................................................................................51

7.3.Autres opérateursdecomparaison ... ... ... ..........................................................................................53

7.4.Tests if/thenimbriqués. ... ... ...........................................................................................................58

7.5.Tester votreconnaissancedes tests.. ... ... ... .......................................................................................58

8.Opérations etsujetsen relation.. ... ... ... .....................................................................................................60

8.1.Opérateurs ... ...............................................................................................................................60

8.2.Constantes numériques.. ... .............................................................................................................66

Part3. Aprèsl'approchebasique ... ... ... ...............................................................................................................68

9.Les variablesrevisitées. ... ... ...................................................................................................................69

9.1.Variables internes.. ... ....................................................................................................................69

9.2.Manipuler leschaînesde caractères.. ... ... ... ......................................................................................86

9.3.Substitution deparamètres. ... ... ......................................................................................................93

9.4.Typer desvariables: declareoutypeset.........................................................................................101

9.5.Références indirectesauxvariables ... ... ... .......................................................................................103

9.6.$RANDOM :générerun nombrealéatoire. ... ... ... ... .........................................................................106

9.7.La constructionendouble parenthèse.. ... ... ... ..................................................................................114

10.Boucles etbranchements. ... ... .............................................................................................................116

10.1.Boucles ... ...............................................................................................................................116

10.2.Boucles imbriquées.. ... ..............................................................................................................127

10.3.Contrôle deboucles. ... ... ............................................................................................................127

10.4.Tests etbranchements. ... ... .........................................................................................................130

11.Substitution decommandes. ... ... ..........................................................................................................138

12.Expansion arithmétique.. ... .................................................................................................................144

13.Récréation ... ....................................................................................................................................145

Part4. Commandes.. ... .................................................................................................................................146

14.Commandes internesetintégrées ... ... ... .................................................................................................156

14.1.Commandes decontrôledes jobs.. ... ... ... ......................................................................................181

15.Filtres externes,programmeset commandes.. ... ... ... ................................................................................186

15.1.Commandes debase. ... ... ...........................................................................................................186

15.2.Commandes complexes.. ... ........................................................................................................191

15.3.Commandes dedateet d'heure.. ... ... ... .........................................................................................200

15.4.Commandes d'analysedetexte ... ... ... ...........................................................................................203

15.5.Commandes pourlesfichiers etl'archivage. ... ... ... ... .......................................................................222

15.6.Commandes decommunications. ... ... ...........................................................................................238

15.7.Commandes decontrôledu terminal.. ... ... ... ..................................................................................253

15.8.Commandes mathématiques.. ... ..................................................................................................254

15.9.Commandes diverses.. ... ............................................................................................................262

16.Commandes systèmeetd'administration ... ... ... .......................................................................................275

16.1.Analyser unscriptsystème ... ... ... ................................................................................................303

Part5. Thèmesavancés. ... ... ..........................................................................................................................305

17.Expressions rationnelles.. ... ................................................................................................................306

17.1.Une brèveintroductionaux expressionsrationnelles. ... ... ... ... ...........................................................306

17.2.Remplacement ... ......................................................................................................................309

18.Documents enligne. ... ... ....................................................................................................................311

ii

18.1.Chaînes enligne. ... ... ................................................................................................................320

19.Redirection d'E/S(entrées/sorties). ... ... .................................................................................................323

19.1.Utiliser exec............................................................................................................................326

19.2.Rediriger lesblocsde code.. ... ... ... ..............................................................................................329

19.3.Applications ... .........................................................................................................................333

20.Sous-shells ... ...................................................................................................................................335

21.Shells restreints.. ... ...........................................................................................................................339

22.Substitution deprocessus. ... ... .............................................................................................................341

23.Fonctions ... ......................................................................................................................................344

23.1.Fonctions complexesetcomplexité desfonctions. ... ... ... ... ...............................................................346

23.2.Variables locales.. ... .................................................................................................................356

23.3.Récursion sansvariableslocales ... ... ... .........................................................................................358

24.Alias ... ............................................................................................................................................361

25.Constructeurs delistes. ... ... ................................................................................................................363

26.Tableaux ... ......................................................................................................................................366

28.Des Zérosetdes Nulls.. ... ... ... ............................................................................................................396

29.Débogage ... .....................................................................................................................................399

30.Options ... ........................................................................................................................................408

31.Trucs etastuces. ... ... .........................................................................................................................410

32.Écrire desscriptsavec style.. ... ... ... ......................................................................................................417

32.1.Feuille destylenon officielled'écriturede scripts.. ... ... ... ... ... ..........................................................417

33.Divers ... ..........................................................................................................................................420

33.1.Shells etscriptsinteractifs etnoninteractifs ... ... ... ... ... ....................................................................420

33.2.Scripts d'appel.. ... .....................................................................................................................421

33.3.Tests etcomparaisons: alternatives.. ... ... ... ...................................................................................425

33.4.Récursion ... .............................................................................................................................425

33.5." Coloriser»des scripts.. ... ... ... ..................................................................................................427

33.6.Optimisations ... .......................................................................................................................439

33.7.Astuces assorties.. ... .................................................................................................................440

33.8.Problèmes desécurité. ... ... .........................................................................................................449

33.9.Problèmes deportabilité. ... ... ......................................................................................................449

33.10.Scripts sousWindows. ... ... .......................................................................................................450

34.Bash, version2et 3.. ... ... ... ................................................................................................................451

34.1.Bash, version2. ... ... ..................................................................................................................451

34.2.Bash, version3. ... ... ..................................................................................................................455

35.Notes finales.. ... .....................................................................................................................................458

35.1.Note del'auteur. ... ... .......................................................................................................................458

35.2.À proposdel'auteur ... ... ... ...............................................................................................................458

35.3.Où trouverdel'aide ... ... ... ................................................................................................................458

35.4.Outils utiliséspourproduire celivre. ... ... ... ... ......................................................................................458

35.5.Remerciements ... ...........................................................................................................................459

Bibliographie. .............................................................................................................................................462

A.Contribution descripts. ... ... .......................................................................................................................463

B.Cartes deréférence. ... ... ............................................................................................................................597

C.Petit guidesurSed etAwk. ... ... ... ... ............................................................................................................602

C.1.Sed ... ............................................................................................................................................602

C.2.Awk ... ...........................................................................................................................................605

D.Codes desortieayant unesignificationparticulière ... ... ... ... ... ..........................................................................608

E.Une introductiondétailléesur lesredirectionsd'entrées/sorties ... ... ... ... ... ...........................................................609

F.Options enlignede commande.. ... ... ... .........................................................................................................611

F.1.Options standardsenligne decommande. ... ... ... ... .................................................................................611

F.2.Options enlignede commandedeBash ... ... ... ... ... .................................................................................612

G.Fichiers importants.. ... ..............................................................................................................................613

H.Répertoires systèmeimportants. ... ... ............................................................................................................614

I.Localisation ... ..........................................................................................................................................616

J.Commandes d'historique.. ... ........................................................................................................................619

K.Un exempledefichier .bashrc................................................................................................................620

L.Convertir desfichiersbatch DOSenscripts shell.. ... ... ... ... ... ...........................................................................630

M.Exercices ... ............................................................................................................................................633

M.1.Analyse descripts. ... ... ....................................................................................................................633

Guideavancé d'écrituredesscripts Bash

iii

M.2.Écriture descripts. ... ... ....................................................................................................................634

N.Historique desrévisions. ... ... .....................................................................................................................642

O.Sites miroirs.. ... .......................................................................................................................................644

P.Liste dechosesà faire.. ... ... ... .....................................................................................................................645

Q.Droits d'utilisation.. ... ...............................................................................................................................647

R.Copyright ... ............................................................................................................................................649

Guideavancé d'écrituredesscripts Bash

iv

PartiePart 1.Introduction

Leshell estuninterpréteur decommandes.Plus qu'unesimplecouche isolanteentrele noyaudusystème d'exploitationet

l'utilisateur,il estaussiun langagedeprogrammation puissant.Unprogramme shell,appeléun script,est unoutilfacile àutiliser

pourconstruire desapplicationsen "regroupant» desappelssystème, outils,utilitaireset binairescompilés.Virtuellement, leré-

pertoireentier descommandesUNIX, desutilitaireset desoutilsest disponibleàpartir d'unscriptshell. Sicen'était passuffisant,

lescommandes shellinternes,telles quelesconstructions detestset deboucles,donnent unepuissanceet uneflexibilitésupplé-

mentairesaux scripts.Lesscripts shellconviennentparticulièrement bienpourles tâchesd'administrationdu systèmeetpour

d'autresroutines répétitivesneréclamant paslesparticularités d'unlangagede programmationstructurécomplet.

1Ilssont connussousle nomdecommandes intégrées156, c'est-à-diredesfonctionnalités internesaushell.

Chapitre1. Pourquoilaprogrammation Shell?

Aucunlangage deprogrammationn'est parfait.Iln'existe mêmepasun langagemeilleurque d'autre;il n'yaque deslangagesen

adéquationou peuconseilléspour desbutsparticuliers. --HerbertMayer

Uneconnaissance fonctionnelledela programmationshellest essentielleàquiconque souhaitedevenirefficace enadministration

desystème, mêmepourceux quinepensent pasavoirà écrireunscript unjour.Pensez qu'audémarragede lamachineLinux, des

scriptsshell durépertoire/etc/rc.dsontexécutés pourrestaurerla configurationdusystème etpermettrela miseenfonction-

nementdes services.Unecompréhension détailléedeces scriptsdedémarrage estimportantepour analyserlecomportement d'un

système,et éventuellementlemodifier.

Écriredes scriptsshelln'est pasdifficileà apprendrecar,d'une part,lesscripts peuventêtreconstruits parpetitessections et,

d'autrepart, iln'ya qu'unassezpetit nombred'opérateurset d'options1spécifiquesau shellàconnaître. Lasyntaxeest simpleet

directe,similaire àunesuite d'appelsdedifférents utilitairesenligne decommandeet iln'existeque peude" règles»à apprendre.

Laplupart despetitsscripts fonctionnentdupremier coupetle débogage,mêmedes pluslongs,est assezsimple.

Unscript shellestune méthode"rapide etsale» pourprototyperune applicationcomplexe.Avoir mêmeunsous-ensemble limité

defonctionnalités dansunscript shellestsouvent unepremièreétape utilelorsd'un projetdedéveloppement. Decettefaçon, la

structurede l'applicationpeutêtre testéeetles problèmesmajeurstrouvés avantd'effectuerle codagefinalen C,C++,Javaou

Perl424.

Laprogrammation shellramèneà laphilosophieclassique desUNIX,c'est àdire,casser desprojetscomplexes ensous-tâchesplus

simpleset assemblerdescomposants etdesutilitaires. Beaucoupconsidèrentque cetteapprochede larésolutionde problèmeest

meilleureou, dumoins,plus abordablequel'utilisation delangagesde nouvellegénérationpuissamment intégrécommePerl,qui

essaientde toutfairepour toutlemonde maisauprix devousforcer àchangervotre processusderéflexion pourvousadapter à

l'outil.

D'aprèsHerbert Mayer," unlangageutiledoitcomprendredes tableaux,despointeurs etunmécanisme génériquepourconstruire

desstructures dedonnées.» Suivantcescritères, leslangagesdes scriptsshellne sontpas" utiles».Peut-être quesi.

Quandne pasutiliserles scriptsshell

•pour destâchesdemandant beaucoupderessources etparticulièrementlorsque larapiditéest unfacteur(tri, hachage,etc.);

•pour desprocéduresimpliquant desopérationsmathématiques nombreusesetcomplexes, spécialementpourde l'arithmétique

àvirgule flottante,descalculs àprécisionarbitraire oudesnombres complexes(optezplutôt pourleC++oule FORTRAN

dansce cas); •pour uneportabilitéinter-plateformes (utilisezleC ouJavaà laplace);

•pour desapplicationscomplexes oùuneprogrammation structuréeestnécessaire (typagedevariables, prototypagedefonc-

tions,etc.) ; •pour desapplicationscritiques surlesquellesvous misezvotreavenir ouceluide lasociété;

•pour dessituationsoù lasécuritéest importante,oùvous avezbesoinde garantirl'intégritéde votresystèmeet devousproté-

gercontre lesintrusionset levandalisme; •pour desprojetsconsistant endenombreux composantsavecdes dépendancesinter-verrouillées;

•lorsque desopérationsimportantes surdesfichiers sontrequises(Bash estlimitéà unaccèsfichier ensérie,ligne parligne,ce

quiest particulièrementmaladroitet inefficace); •si lesupportnatif destableauxmultidimensionnels estnécessaire; •si vousavezbesoin destructuresde données,tellesque deslisteschaînées oudesarbres ; •si vousavezbesoin degénérerou demanipulerdes graphiquesouune interfaceutilisateur(GUI) ; •lorsqu'un accèsdirectau matérielestnécessaire ; •lorsque vousavezbesoin d'accéderàun port,àun socketd'entrée/sortie; •si vousavezbesoin d'utiliserdesbibliothèques ouuneinterface propriétaire;

•pour desapplicationspropriétaires, àsourcesfermées (lessourcesdes shellssontforcément visiblespartout lemonde).

2

2Beaucoupde fonctionnalitésdeksh88,et mêmequelquesunes delaversion miseàjour ksh93,ont étéintégréesà Bash.3Parconvention, lesscriptsshell écritsparl'utilisateur, compatiblesavecle shellBourne,sont nommésavecl'extension .sh.Les scriptssystème,tels queceuxtrouvés dans/etc/rc.d,ne suiventpas

cettenomenclature.

Dansl'un descasci-dessus, considérezl'utilisationd'un langagedescripts pluspuissant,peut-être Perl,Tcl,Python,Ruby,voire

unlangage compilédehaut niveautelque C,C++ouJava.Même danscecas, prototyperl'applicationavec unscriptshell peut

toujoursêtre uneétapeutile audéveloppement.

Nousutiliserons Bash,unacronyme pour"Bourne-Again shell»et uncalemboursur ledésormaisclassique Bourneshellde Ste-

phenBourne. Bashestdevenu unstandarddefacto pourla programmationdescripts surtousles typesd'UNIX.La plupartdes

principesdiscutés danscelivre s'appliquentégalementà l'écrituredescripts avecd'autresshells telsquele KornShell ,duquel dé-

riventcertaines desfonctionnalitésde Bash,2,le shellC etses variantes(notezque laprogrammationen shellC n'estpas recom-

mandéeà causedecertains problèmesinhérents,comme indiquéenoctobre 1993surun messageUsenet parTom Christiansen).

Cequi suitestun tutorielsurl'écriture descriptsshell. Ilesten grandepartiecomposé d'exemplesillustrantdifférentes fonctionna-

litésdu shell.Lesscripts enexempleont ététestés,autant quepossible,et certainsd'entreeux peuventmêmeêtre utilesdansla

vraievie. Lelecteurpeut joueravecle codedesexemples dansl'archivedes sources(nom_script.shou

nom_script.bash),3leurdonner ledroitd'exécution (chmodu+rx nom_du_script)et lesexécuterpour voircequ'il

sepasse. Silessources del'archivene sontpasdisponibles, alorscopier/collerà partirdela versionHTMLoupdf(laversion ori-

ginaledispose d'uneversiontexte, disponibleàcette adresse)contrairement àlatraduction française).Sachezque certainsscripts

présentésici introduisentdesfonctionnalités avantqu'ellene soientexpliquéeset quececipourrait réclamerdulecteur deliretem-

porairementplus avantpourdes éclaircissements. Saufmention contraire,l'auteurdece livreaécrit lesscriptsd'exemples quisuivent.

Pourquoila programmationShell?

3

Chapitre2. Lancementavecun "#!»

Laprogrammation shellestun jukeboxdes années50... --LarryWall

Dansle casleplus simple,unscript n'estriende plusqu'uneliste decommandessystème enregistréesdansun fichier.Àtout le

moins,cela évitel'effortde retapercetteséquence particulièredecommandes àchaquefois qu'elledoitêtre appelée.

Exemple2.1. cleanup:Un scriptpournettoyer lesjournauxde tracedans/var/log #cleanup #À exécuterentant queroot,bien sûr. cd/var/log cat/dev/null >messagescat/dev/null >wtmpecho"Journaux nettoyés."

Iln'y ariend'inhabituel ici,seulementun ensembledecommandes quipourraienttout aussibienêtre appeléesl'uneaprès l'autreà

partirde lalignede commandesurla consoleoudans uneémulationxterm.Les avantagesdeles placerdansun scriptvontbien

au-delàde nepasavoir àlesretaper. Lescriptdevient unoutiletpeut facilementêtremodifié oupersonnalisépour uneapplication

particulière. Exemple2.2. cleanup:Un scriptdenettoyage amélioré #!/bin/bash#En-tête propred'unscript Bash. #Nettoyage, version2

#À exécuterentant queroot,bien sûr#Insérez ducodeici pourafficherles messagesd'erreuret sortirsi#l'utilisateur n'estpasroot.

REP_TRACES=/var/log#Les variablessontpréférées auxvaleurscodées endur.cd$REP_TRACES cat/dev/null >messagescat/dev/null >wtmp echo"Journaux nettoyés." exit# Labonneméthode pour"sortir"d'un script. Maintenant,cela commenceàressembler àunvrai script.Maisnous pouvonsallerencore plusloin... Exemple2.3. cleanup:Une versionamélioréeet généraliséedesscripts précédents #!/bin/bash#Nettoyage, version3.

#Attention :#----------- #Ce scriptutiliseun nombredefonctionnalités quiserontexpliquées bien#+après. #Après avoirterminéla premièremoitiéde celivre,il nedevraitplus comporter#+de mystère.

REP_TRACES=/var/logUID_ROOT=0# Seulslesutilisateurs avecun$UID valant0ont lesdroitsde root.LIGNES=50# Nombredelignes sauvegardéespardéfaut.

4quotesdbs_dbs45.pdfusesText_45
[PDF] Alex affirme que le nombre A est égal au produit desnombres a et b A-t-il raison Justifier 3ème Mathématiques

[PDF] alex du prel le fantome du palace hotel le bleu qui fait mal aux yeux :) 4ème Français

[PDF] alex spektor the sun 3ème Musique

[PDF] alexa jeopardy questions today PDF Cours,Exercices ,Examens

[PDF] alexandre boyon PDF Cours,Exercices ,Examens

[PDF] alexandre dumas les trois mousquetaires analyse PDF Cours,Exercices ,Examens

[PDF] alexandre dumas les trois mousquetaires tome 1 PDF Cours,Exercices ,Examens

[PDF] alexandre le grand 6ème Histoire

[PDF] alexandre le grand pdf PDF Cours,Exercices ,Examens

[PDF] alexandre le grand racine PDF Cours,Exercices ,Examens

[PDF] alexandre oler PDF Cours,Exercices ,Examens

[PDF] alexandre vienne blog PDF Cours,Exercices ,Examens

[PDF] alexandria lighthouse PDF Cours,Exercices ,Examens

[PDF] Alexandrie 6ème Histoire

[PDF] Alexandrie , une grande ville hellénistique 6ème Histoire