<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY chap1 SYSTEM "chap1.xml">
<!ENTITY chap2 SYSTEM "chap2.xml">
<!ENTITY chap3 SYSTEM "chap3.xml">
<!ENTITY chap4 SYSTEM "chap4.xml">
<!ENTITY chap5 SYSTEM "chap5.xml">
<!ENTITY chap6 SYSTEM "chap6.xml">
<!ENTITY chap7 SYSTEM "chap7.xml">
<!ENTITY chap8 SYSTEM "chap8.xml">
<!ENTITY chap9 SYSTEM "chap9.xml">
<!ENTITY chap10 SYSTEM "chap10.xml">
<!ENTITY chap11 SYSTEM "chap11.xml">
<!ENTITY chap12 SYSTEM "chap12.xml">
<!ENTITY app1 SYSTEM "app1.xml">
<!ENTITY app2 SYSTEM "app2.xml">
<!ENTITY gloss SYSTEM "gloss.xml">
<!ENTITY index-gloss SYSTEM "index-gloss.xml">
<!ENTITY images "images/Bash-Beginners-Guide">
]>

<book lang="fr">

<bookinfo>
<title>Guide Bash du débutant</title>
<subtitle>

    Version française du livre <foreignphrase lang="en">Bash Guide for 
    Beginners</foreignphrase>
    
</subtitle>

<authorgroup>
<author>
<firstname>Machtelt</firstname>
<surname>Garrels</surname>
<affiliation>
<orgname>Xalasys.com</orgname>
<address>
<email>tille ne veut pas de spam CHEZ xalasys POINT com</email>
</address>
</affiliation>
</author>
</authorgroup>

<othercredit role="traduction" class="translator">
   <surname>Ykerb</surname>
   <contrib>Adaptation française</contrib>
</othercredit>

<othercredit role="relecture" class="translator">
  <firstname>Marc</firstname>
  <surname>Blanc</surname>
  <contrib>Relecture de la version française</contrib>
  <email>arsace CHEZ wanadoo POINT fr</email>
</othercredit>

<othercredit role="relecture" class="translator">
  <firstname>Jerome</firstname>
  <surname>Blondel</surname>
  <contrib>Relecture de la version française</contrib>
  <email>jeromeblondel CHEZ yahoo POINT fr</email>
</othercredit>

<othercredit role="publication" class="copyeditor">
  <firstname>Jean-Philippe</firstname>
  <surname>Guérard</surname>
  <contrib>Préparation de la publication de la v.f.</contrib>
  <email>fevrier CHEZ tigreraye POINT org</email>
<!--

 - Correction du balisage.
 - Ajout de blancs insécables devant les ponctuations doubles.

-->
</othercredit>

<releaseinfo>Version 1.9.fr.1.1</releaseinfo>
<pubdate>2007-04-23</pubdate>

<keywordset>
<keyword>Linux</keyword>
<keyword>Scripts</keyword>
<keyword>Linux</keyword>
<keyword>Bash</keyword>
<keyword>guide</keyword>
<keyword>Guide</keyword>
<keyword>Exercices</keyword>
<keyword>exercices</keyword>
<keyword>Bash</keyword>
<keyword>scripting</keyword>
<keyword>Scripting</keyword>
<keyword>awk</keyword>
<keyword>sed</keyword>
<keyword>variables</keyword>
<keyword>fonctions</keyword>
<keyword>boucles</keyword>
<keyword>conditions</keyword>
</keywordset>
</bookinfo>

<toc></toc>

<preface>
<title>Introduction</title>
<section id="intro_01">
<title>Pourquoi ce guide&nbsp;?</title>

<para>La raison première de ce document est que beaucoup de gens trouvent le <ulink url="http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html">HOWTO</ulink> trop court et incomplet, et le guide <ulink url="http://tldp.org/LDP/abs/html/">Bash Scripting</ulink> 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.</para>
<para>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 à survivre dans la vraie vie.</para>
<para>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.</para>

</section>

<section id="intro_02">
        <title>Qui devrait lire ce guide?</title>

        <para>Quiconque qui, travaillant sur un système de type UNIX, veut se simplifier la vie. Utilisateurs avancés ou administrateurs peuvent 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.</para>

        <para>Prérequis &mdash; Ce qui n'est pas dans ce guide. Vous 
        devriez&nbsp;:</para>

<itemizedlist>
<listitem><para>

Être familiarisé avec UNIX ou Linux&nbsp;: les commandes de bases, les 
pages de manuel et de documentation.
        
</para></listitem>
<listitem><para>

Être capable d'utiliser un éditeur de texte.

</para></listitem>
<listitem><para>

Comprendre les processus d'initialisation et d'arrêt du système&nbsp;: 
init et scripts d'initialisation.

</para></listitem>
<listitem><para>

Savoir créer des utilisateurs et des groupes, déclarer des mots de 
passe.

</para></listitem>
<listitem><para>

Savoir donner des droits et des modes d'accès.

</para></listitem>
<listitem><para>

Comprendre les conventions de nommage des périphériques, le 
partitionnement, ainsi que le montage et démontage des systèmes de 
fichiers.

</para></listitem>
<listitem><para>

Savoir ajouter et retirer des logiciels du système.

</para></listitem>
</itemizedlist>
<para>Voir <ulink url="http://tldp.org/LDP/intro-linux/html/">Introduction to Linux</ulink> (ou votre miroir TLDP <ulink url="http://www.tldp.org/mirrors.html">TLDP mirror</ulink>) si vous ignorez l'un de ces aspects. Des informations complémentaires peuvent être trouvées dans la documentation de votre système (man&nbsp;; info pages), ou là&nbsp;: <ulink url="http://tldp.org">the Linux Documentation Project</ulink>.</para>

</section>
<section id="intro_03">
<title>Nouvelles versions, traductions et disponibilité</title>

<para>La dernière édition se trouve à <ulink url="http://tille.xalasys.com/training/bash/" />.  Vous devriez aussi la trouver à <ulink url="http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html" />.</para>

<para>Ce guide est disponible imprimé chez <ulink url="http://store.fultus.com/product_info.php?products_id=66">Fultus.com</ulink>.</para>

<figure><title>Couverture du Guide Bash du Débutant</title>
<mediaobject>
<imageobject>
<imagedata fileref="&images;/bgb.jpg" format="JPG"></imagedata>
</imageobject>
<imageobject>
<imagedata fileref="&images;/bgb.eps" format="EPS"></imagedata>
</imageobject>
<textobject>
        <phrase>Couverture du guide, titre rouge vif sur fond bleu.</phrase>
</textobject>
</mediaobject>
</figure>
<para>Ce guide a été traduit&nbsp;:</para>
<itemizedlist>
        <listitem><para>Traduction chinoise at <ulink url="http://xiaowang.net/bgb-cn/" />, par Wang Wei.</para></listitem>
        <listitem><para>Traduction ukrainienne at <ulink url="http://docs.linux.org.ua/index.php/LDP:Bash_beginners_guide" />, par Yaroslav Fedevych et son équipe.</para></listitem>
</itemizedlist>
<para>Une traduction française en cours, à relire.</para>
</section>
<section id="intro_04">
<title>Historique des révisions</title>
<para>
<revhistory>
<revision>
  <revnumber>1.9.fr.1.1</revnumber>
  <date>2007-04-23</date>
  <authorinitials>Y, JPG</authorinitials>
  <revremark>Relectures de Marc Blanc et Jerome Blondel.</revremark>
</revision>
<revision>
  <revnumber>1.9.fr.1.0</revnumber>
  <date>2007-04-01</date>
  <authorinitials>Y, JPG</authorinitials>
  <revremark>Première version française.</revremark>
</revision>
<revision>
<revnumber>1.9</revnumber>
<date>2006-10-10</date>
<authorinitials>MG</authorinitials>
<revremark>Remarques des lecteurs ajoutées, index ajouté en utilisant les tags DocBook.</revremark>
</revision>
<revision>
<revnumber>1.8</revnumber>
<date>2006-03-15</date>
<authorinitials>MG</authorinitials>
<revremark>

Exemple clarifié au Chap 4, correction du document «&nbsp;ici&nbsp;» 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.

</revremark>
</revision>
      <revision>
              <revnumber>1.7</revnumber>
              <date>2005-09-05</date>
              <authorinitials>MG</authorinitials>
              <revremark>Correction de typographie au Chap 3, 6 et 7, remarques de lecteurs ajoutées, ajout d'une note au Chap 7.</revremark>
        </revision>
      <revision>
        <revnumber>1.6</revnumber>
        <date>2005-03-01</date>
        <authorinitials>MG</authorinitials>
        <revremark>Debuggage mineur, ajout de mots clés, note au sujet du nouveau Bash 3.0, retrait d'une image vierge.</revremark>
      </revision>
      <revision>
        <revnumber>1.5</revnumber>
        <date>2004-12-06</date>
        <authorinitials>MG</authorinitials>
        <revremark>Changements du fait du nouveau domaine, corrections mineures.</revremark>
      </revision>
      <revision>
        <revnumber>1.4</revnumber>
        <date>2004-10-18</date>
        <authorinitials>MG</authorinitials>
        <revremark>Debuggage, ajout de quelques notes au Chap 9, repositionnement de vues écran avec les sections écran.  Correction de typographie.</revremark>
      </revision>
      <revision>
        <revnumber>1.3</revnumber>
        <date>2004-07-09</date>
        <authorinitials>MG</authorinitials>
        <revremark>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.</revremark>
      </revision>
      <revision>
        <revnumber>1.2</revnumber>
        <date>2004-06-15</date>
        <authorinitials>MG</authorinitials>
        <revremark>Ajout index, plus de repère dans les sections écrans.</revremark>
      </revision>

      <revision>
        <revnumber>1.1</revnumber>
        <date>2004-05-22</date>
        <authorinitials>MG</authorinitials>
        <revremark>Dernière relecture avant la mise sous presse, ajout d'exemples, vérification du sommaire, exercices, introduction arrangée.</revremark>
      </revision>
      <revision>
        <revnumber>1.0</revnumber>
        <date>2004-04-27</date>
        <authorinitials>TM</authorinitials>
        <revremark>Livraison initiale pour LDP, d'autres exercices, d'autres repères, moins d'erreurs et abus, ajout du glossaire.</revremark>
      </revision>

      <revision>
        <revnumber>1.0-beta</revnumber>
        <date>2003-04-20</date>
        <authorinitials>MG</authorinitials>
        <revremark>Pre-version</revremark>
      </revision>

</revhistory>
</para>
</section>

<section id="intro_05">
<title>Contributions</title>

<para>
        Merci à tous les amis qui ont aidé (ou essayé) et à mon mari&nbsp;; vos paroles d'encouragement ont rendu ce travail possible.  Merci à tous les gens qui ont soumis anomalies, exemples et remarques &mdash; parmi plein, plein d'autres&nbsp;:</para>
<itemizedlist>
<listitem><para>Hans Bol, l'une des groupies</para></listitem>
<listitem><para>Mike Sim, remarques sur le style</para></listitem>
<listitem><para>Dan Richter, pour les exemples de tableaux</para></listitem>
<listitem><para>Gerg Ferguson, pour les idées sur le titre</para></listitem>
<listitem><para>Mendel Leo Cooper, pour avoir mis à disposition de l'espace</para></listitem>
<listitem><para>#linux.be, pour m'avoir aidé à garder les pieds sur terre</para></listitem>
<listitem><para>Frank Wang, pour ses remarques détaillées sur toutes mes 
erreurs <literal>;-)</literal></para></listitem>
</itemizedlist>
<para>Remerciements special à Tabatha Marshall qui a bénévolement revu, et l'expression, et la grammaire.  On forme une bonne équipe&nbsp;: elle travaille quand je dors.  Et vice versa ; - )</para>

</section>
<section id="intro_06">
<title>Observations et retours variés</title>

<para>
        Informations manquantes, liens invalides, erreurs de frappe, remarques&nbsp;? Envoyer un mail à 
<address>

<email>tille ne veut pas de spam CHEZ xalasys POINT com</email>

</address>
La personne assurant le suivi du document.
</para>

</section>
<section id="intro_07">
<title>information de Copyright</title>
<para>Copyright © 2003-2005  Machtelt Garrels.</para>
<para>

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&nbsp;: <quote>New versions of this document</quote>, 
<quote>Contributions</quote>, <quote>Feedback</quote> et 
<quote>Copyright information</quote>, sans textes de couverture de garde 
ni de textes de couverture de dos. Une copie de la licence est incluse 
dans <xref linkend="app_01" /> intitulée <quote>GNU Free Documentation 
License</quote>.

</para>

<para>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 de ce guide.</para>

<para>Les logos, marques déposées et les symboles utilisés dans ce guide sont la propriété de leur dépositaire respectif.</para>

</section>
<section id="intro_08">
<title>De quoi avez-vous besoin&nbsp;?</title>
<para><command>Bash</command>, téléchargeable à <ulink url="http://www.gnu.org/directory/GNU/">http://www.gnu.org/directory/GNU/</ulink>. Le Bash accompagne à peu près tous les systèmes Linux, et se trouve maintenant sur un large éventail de systèmes UNIX.</para>
<para>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.</para>
</section>
<section id="intro_09">
<title>Conventions employées dans ce document</title>
<para>Les conventions typographiques et d'usage suivantes apparaissent dans le texte&nbsp;:
</para>
                                                                                
<table id="conventions" frame="all"><title>Conventions typographiques et d'usage</title>
<tgroup cols="2" align="left" colsep="1" rowsep="1">
                                                                                
<thead>
<row><entry>Type de texte</entry><entry>sens</entry></row>
</thead>
                                                                                
<tbody>
<row>
<entry><quote>Texte entre guillemets</quote></entry>
<entry>Citation de gens, texte rendu par l'ordinateur entre guillemets</entry>
</row>
<row>
<entry><screen>reproduction de la vue du terminal</screen></entry>
<entry>Capture des données saisies ou affichées sur le terminal, généralement rendue avec un fond gris clair.</entry>
</row>
<row>
<entry><command>commande</command></entry>
<entry>Nom d'une commande qui peut être tapée sur la ligne de commande.</entry>
</row>
<row>
<entry><varname>VARIABLE</varname></entry>
<entry>Nom d'une variable ou pointeur vers le contenu d'une variable, comme
<varname>$VARNAME</varname>.</entry>
</row>
<row>
<entry><option>option</option></entry>
<entry>Option d'une commande, comme <quote>l'option <option>-a</option> de la commande
<command>ls</command></quote>.</entry>
</row>
<row>
<entry><parameter>argument</parameter></entry>
<entry>Argument d'une commande, comme dans <quote>read
<command>man <parameter>ls</parameter></command></quote>.</entry>
</row>
<row>
<entry><cmdsynopsis><command>commande <option>options</option>
<parameter>paramètres</parameter></command></cmdsynopsis></entry>
<entry>Synopsis de commande ou emploi habituel, sur une ligne séparée.</entry>
</row>
<row>
<entry><filename>NomDeFichier</filename></entry>
<entry>Nom d'un fichier ou d'un répertoire, par exemple <quote>se positionner dans le répertoire 
<filename>/usr/bin</filename> .</quote></entry>
</row>
<row>
<entry><keycap>Touche</keycap></entry>
<entry>Touches à frapper sur le clavier, exemple <quote>taper <keycap>Q</keycap>
pour quitter</quote>.</entry>
</row>
<row>
<entry><guibutton>Bouton</guibutton></entry>
<entry>Bouton graphique sur lequel cliquer comme le bouton <guibutton>OK</guibutton>
.</entry>
</row>
<row>
<entry><menuchoice><guimenu>Menu</guimenu><guimenuitem>Choix</guimenuitem>
</menuchoice></entry>
<entry>Options à choisir dans un menu graphique, par exemple&nbsp;: <quote>Choisir
<menuchoice><guimenu>Aide</guimenu><guimenuitem>A propos de Mozilla</guimenuitem>
</menuchoice> dans votre navigateur.</quote></entry>
</row>
<row>
<entry><emphasis>Terminologie</emphasis></entry>
<entry>Terme important ou concept&nbsp;: <quote>Le <emphasis>noyau</emphasis>
est le coeur du système.</quote></entry>
</row>
<row>
<entry><screen>\</screen></entry>
<entry>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&nbsp;: 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 <quote>Ne pressez pas encore la touche <keycap>Entrée</keycap> encore&nbsp;!</quote></entry>
</row>
<row>
<entry>Voir <xref linkend="chap_01" /></entry><entry>Lien vers sujets connexes dans ce guide.</entry>
</row>
<row>
<entry><ulink url="http://tille.xalasys.com">L'auteur</ulink></entry>
<entry>Lien vers une ressource WEB externe.</entry>
</row>
</tbody>
                                                                                
</tgroup>
</table>
 </section>                                                                               
<section id="intro_10">
<title>Organisation de ce document</title>
<para>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.</para>
<para>Les chapitres 4 à 6 abordent les outils de base qui sont utilisés régulièrement dans les scripts.</para>
<para>Les chapitres 8 à 12 abordent les constructions les plus courantes dans les scripts.</para>
<para>Tous les chapitres sont accompagnés d'exercices qui testent votre aptitude à aborder le chapitre suivant.</para>

<itemizedlist>
<listitem>
<para><xref linkend="chap_01" />&nbsp;: Les bases de Bash&nbsp;: pourquoi Bash est si bon, construction de blocs, premières consignes d'écriture de bons scripts.</para>
</listitem>
<listitem>
<para><xref linkend="chap_02" />&nbsp;: Les bases du script&nbsp;: écrire et débugger.</para>
</listitem>
<listitem>
<para><xref linkend="chap_03" />&nbsp;: L'environnement Bash&nbsp;: les fichiers d'initialisation, les variables, les expressions littérales, l'ordre d'expansion, les alias, les options.</para>
</listitem>
<listitem>
<para><xref linkend="chap_04" />&nbsp;: Expressions régulières&nbsp;: une introduction.</para>
</listitem>
<listitem>
<para><xref linkend="chap_05" />&nbsp;: Sed&nbsp;: une introduction à l'éditeur ligne à ligne.</para>
</listitem>
<listitem>
<para><xref linkend="chap_06" />&nbsp;: Awk&nbsp;: introduction à awk le langage de progammation.</para>
</listitem>
<listitem>
<para><xref linkend="chap_07" />&nbsp;: Les instructions conditionnelles&nbsp;: constructions utilisées en Bash pour tester des conditions.</para>
</listitem>
<listitem>
<para><xref linkend="chap_08" />&nbsp;: Les scripts interactifs&nbsp;: faire des scripts conviviaux, intégrer la saisie de l'utilisateur.</para>
</listitem>
<listitem>
<para><xref linkend="chap_09" />&nbsp;: Exécuter des commandes récursivement&nbsp;: constructions utilisées en Bash pour automatiser l'exécution de commandes.</para>
</listitem>
<listitem>
<para><xref linkend="chap_10" />&nbsp;: Variables complexes&nbsp;: spécifier des types de variables, introduction aux tableaux de variables, opérations sur variables.</para>
</listitem>
<listitem>
<para><xref linkend="chap_11" />&nbsp;: Fonctions&nbsp;: une introduction.</para>
</listitem>
<listitem>
<para><xref linkend="chap_12" />&nbsp;: Capturer des signaux&nbsp;: introduction aux signaux de processus, capturer les signaux envoyés par l'utilisateur.</para>
</listitem>
</itemizedlist>
</section>                                                                                
                                                                                


</preface>
<toc></toc>
&chap1;
&chap2;
&chap3;
&chap4;
&chap5;
&chap6;
&chap7;
&chap8;
&chap9;
&chap10;
&chap11;
&chap12;
&app1;
&app2;
&gloss;
&index-gloss;

</book>