<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">


<article lang="fr">

 <articleinfo>
  <title>Les Notes de Joey&nbsp;: Bash basique</title>

  <subtitle>
  Gazette&nbsp;Linux n°160&nbsp;&mdash;&nbsp;mars&nbsp;2009
  </subtitle>

  <author>
    <firstname>Joey</firstname>
    <surname>Prestia</surname>
    <email>joey CHEZ linuxamd POINT com</email>
  </author>

  <othercredit role="traduction" class="translator">
     <firstname>Gérard </firstname>
     <surname>Baylard</surname>
     <contrib>Adaptation française </contrib>
     <email>g POINT baylard CHEZ club TIRET internet POINT fr</email>
  </othercredit>

  <othercredit role="relecture" class="translator">
    <firstname></firstname>
    <surname></surname>
    <contrib>Relecture de la version française </contrib>
    <email></email>
  </othercredit>

  <legalnotice>
    <para>Article paru dans le n°160 de la Gazette Linux de mars 2009.</para>
    <para>Article publié sous <ulink url="http://linuxgazette.net/copying.html">Open Publication License</ulink>. La <citetitle>Linux Gazette</citetitle> n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.</para>
  </legalnotice>

  <copyright>
    <year>2009</year>
    <holder>Joey Prestia</holder>
  </copyright>

  <copyright>
    <year>2009</year>
    <holder>Gérard Baylard</holder>
  </copyright>

  <copyright>
    <year></year>
    <holder></holder>
  </copyright>
 </articleinfo>

<para>On prétend souvent que la vraie puissance de <trademark class="copyright">Linux</trademark> réside dans sa ligne de commande &mdash;&nbsp;et c'est vrai. Malheureusement, beaucoup de nouveaux utilisateurs de <trademark class="copyright">Linux</trademark>, qui ont commencé par s'en servir comme système d'exploitation de bureau, sont contrariés quand ils découvrent la fréquente obligation d'utiliser la ligne de commande &mdash;&nbsp;environnement peu familier et ipso facto  inconfortable. Ce cas se rencontre généralement quand ils doivent faire une installation à partir d'une archive <computeroutput>tar</computeroutput> (code source à compiler dans un fichier avec extension <computeroutput>tar.gz</computeroutput>)&nbsp;; ils découvrent alors qu'ils doivent taper des commandes et se déplacer dans des dossiers donnés. Pour pimenter le tout, le séparateur de dossiers (<emphasis role="bold">/</emphasis>&nbsp;: barre inclinée) perturbera les habitués du <trademark class="registered">DOS</trademark>.
</para>
<para>
Ou bien, parfois, pour un bon travail, il est nécessaire de revoir des affichages passés &mdash;&nbsp;opération pouvant tout à fait se transformer en véritable gageure sous <trademark class="copyright">Linux</trademark>. Tout cela est bien difficile pour les nouveaux utilisateurs quand on considère les multiples différences entre systèmes d'exploitation. Je vais donc ici essayer de vous faciliter une transition par l'exposé de quelques fondamentaux&nbsp;: ils seront une aide précieuse, soit pour une étude de <trademark class="copyright">Linux</trademark> dans les règles, soit plus simplement pour un début de rupture avec <trademark class="copyright">Microsoft</trademark>.
</para>
<para>
En fait, une fois familiarisé avec quelques concepts-clés, <trademark class="copyright">Linux</trademark> deviendra beaucoup plus facile. Entre autres choses, la structure des dossiers&nbsp;: par exemple, fini le lecteur <computeroutput>C:\</computeroutput>. Au lieu de cela, pour <trademark class="copyright">Linux</trademark>, la <emphasis>racine du système de fichiers</emphasis> se situe à «&nbsp;<emphasis role="bold">/</emphasis>&nbsp;», l'équivalent de <computeroutput>C:\</computeroutput> pour <trademark class="registered">Windows</trademark>. Peu importe le nombre de lecteurs dans un système <trademark class="copyright">Linux</trademark>, il n'y a qu'une et une seule arborescence de système de fichiers &mdash;&nbsp;ajouter des lecteurs accroît simplement l'espace disponible. <trademark class="copyright">Linux</trademark> n'utilise pas le concept d'une arborescence de dossiers propre à chaque lecteur comme le fait <trademark class="registered">Windows</trademark>.
</para>
<para>
L'apprentissage de la structure de cette arborescence de dossiers est un des plus gros obstacles du nouvel utilisateur. Par exemple, la partie du système contenant les fichiers vous appartenant s'appelle votre dossier personnel&nbsp;; le nom de ce dossier est le même que votre nom d'utilisateur, et il est placé dans le dossier <computeroutput>/home</computeroutput>. À la fin de cet article, vous trouverez un lien vers un excellent petit tutoriel&nbsp;: il faut une paire d'heures pour le parcourir, mais il ne fait aucun doute qu'il vous familiarisera avec <trademark class="copyright">Linux</trademark>.
</para>
<para>
La plupart des commandes de <trademark class="copyright">Linux</trademark> sont une abréviation de ce que la commande fait&nbsp;; par exemple, la commande <command>ls</command> signifie <literal>L</literal>i<literal>S</literal>ter, et la commande <command>cd</command> est un condensé pour <literal>C</literal>hanger de <literal>D</literal>ossier. Simplement par la connaissance de quelques commandes élémentaires, vous pourrez vous déplacer efficacement dans votre système et exécuter de nombreuses tâches, mais soyez patient &mdash;&nbsp;cela prend du temps. <trademark class="copyright">Linux</trademark> dispose d'un peu plus de 3&nbsp;000 commandes.
</para>
<blockquote>
<attribution>&nbsp;Ben&nbsp;    &nbsp;    &nbsp;</attribution>
<para>
<citation>&nbsp;En réalité, cette dernière affirmation est exacte et inexacte à la fois. Tout programme dans <trademark class="copyright">Linux</trademark> est une commande&nbsp;; mais, vous n'avez besoin de connaître qu'un faible pourcentage de celles qui fonctionnent utilement en ligne de commande. En règle générale, la boîte à outils <trademark class="copyright">Unix</trademark> classique (comme, par exemple, 
<ulink url="http://www.dataexpedition.com/~sbnoble/Tips/2commands.html">cette liste</ulink> de commandes) contient tout le  nécessaire &mdash;&nbsp;et les experts eux-mêmes en connaissent rarement la totalité. À mon avis, la connaissance d'une quarantaine de ces commandes suffira à couvrir 99,9&nbsp;% des besoins en temps normal.</citation></para>
</blockquote>

<para>
Toutes ont des analogies dans leur syntaxe, et quelques concepts de base leur sont communs. Peut-être que la commande <command>man</command> est la chose la plus importante dont il faille se souvenir&nbsp;; chaque fois que vous aurez besoin d'utiliser certaine commande mal connue, frappez simplement <command>man</command>&nbsp;<emphasis><command>commande</command></emphasis>. Cela affichera la <emphasis>page du <command>man</command>uel</emphasis> pour cette commande&nbsp;; vous y trouverez les informations dont vous pourriez avoir besoin préalablement à son exécution.
</para>

<section id="syntax"><title>Syntaxe</title>
<para>
La syntaxe d'une commande fait référence à la grammaire de la séquence de caractères à frapper en ligne de commande. Pour vérifier la syntaxe d'une commande spécifique, un rapide coup d'œil à la page ad-hoc du manuel clarifiera les choses&nbsp;; cette information se trouve dans le paragraphe <foreignphrase>SYNOPSIS</foreignphrase> (synoptique ou vue d'ensemble). Pour la plupart des commandes la syntaxe est «&nbsp;<emphasis><command>commande&blank;options&blank;argument</command></emphasis>&nbsp;».
</para>

<itemizedlist mark="none" spacing="compact">
	  <listitem>
	  <para><emphasis><command>commande</command></emphasis></para>
      <blockquote>
      <para>
      Le nom du programme comme <command>ls</command> ou <command>cat</command> ou <command>grep</command>.</para>
      </blockquote>	  
	  </listitem>

	  <listitem>
	  <para><emphasis><command>option</command></emphasis></para>
	  <blockquote>
      <para>
      Un tiret (court) devant une lettre pour la <emphasis>forme brève</emphasis> de l'option ou deux tirets suivis d'un mot pour la <emphasis>forme longue</emphasis>. <computeroutput>-a</computeroutput> est une forme brève et <computeroutput>--all</computeroutput> une forme longue&nbsp;; les deux expressions ont la même signification. 
      </para>
      </blockquote>
      </listitem>	  

	  <listitem>
	  <para><emphasis><command>argument</command></emphasis></para>
      <blockquote>
      <para>
      Un argument peut-être un nom de fichier, un dossier, une désignation de périphérique comme <computeroutput>/dev/cdrom</computeroutput>. Il est en règle générale lié à une option (par exemple&nbsp;: &nbsp;<computeroutput>--file doc.txt</computeroutput>) et désigne, dans un certain sens, un des objets de la commande.&nbsp;».
      </para>
      </blockquote>	  
	  </listitem>
</itemizedlist>


<para>
Nombre de personnes ne savent pas trop là où il faut placer une espace dans la ligne de commande. La meilleure indication est qu'il faut toujours mettre une espace à la suite du nom de la commande et entre chaque option précédée d'un tiret. Les arguments peuvent demander à être précédés d'une espace ou non. Encore une fois, la page du manuel sera le meilleur guide.
</para>
</section>

<section id="prompt"><title>L'invite</title>
<para>La première chose que vous voyez lorsque vous travaillez avec l'interpréteur de commande est l'invite. À sa vue, vous savez normalement le nom de l'utilisateur connecté, le nom du système hôte et l'emplacement où vous vous trouvez dans ce système.
</para>

<blockquote>
<attribution>&nbsp;Ben&nbsp;    &nbsp;    &nbsp;</attribution>
<para>
<citation>&nbsp;Cela n'est pas forcément vrai sur bon nombre de systèmes <trademark class="copyright">Unix</trademark>, ou encore dans quelques unes des petites distributions <trademark class="copyright">Linux</trademark>. Souvent, l'invite n'est représentée que par «&nbsp;<computeroutput>$</computeroutput>&nbsp;», «&nbsp;<computeroutput>%</computeroutput>&nbsp;» ou «&nbsp;<computeroutput>#</computeroutput>&nbsp;» pour vous montrer votre niveau d'utilisateur et le type d'interpréteur&nbsp;; pour en savoir plus vous devrez soit configurer l'invite, soit utiliser quelques commandes informatives de la boîte à outils.
 </citation></para>
</blockquote>
<para>
Voyez l'exemple ci-après&nbsp;: on peut voir que le nom d'utilisateur est «&nbsp;<literal>tom</literal>&nbsp;», suivi par le symbole «&nbsp;<literal>@</literal>&nbsp;» séparant le nom d'utilisateur du nom de la machine hôte&nbsp;; si vous n'avez jamais donné de nom à votre système, il peut y avoir «&nbsp;<literal>localhost</literal>&nbsp;» à cet endroit là. À la suite de cela vous avez le caractère «&nbsp;<literal>~</literal>&nbsp;» indiquant que vous vous situez dans le répertoire personnel de l'utilisateur. Pour terminer, il y a le caractère «&nbsp;<literal>$</literal>&nbsp;»&nbsp;; il indique, de manière générale, le niveau de droits d'accès de l'utilisateur. Cela varie selon les interpréteurs&nbsp;; par exemple, les interpréteurs <literal>C</literal> (<application>csh</application>, <application>tcsh</application>) utiliseront «&nbsp;<literal>%</literal>&nbsp;» pour un utilisateur normal, alors que l'interpréteur <foreignphrase>Bourne</foreignphrase> et ses dérivés (<application>sh</application>, <application>ksh</application>, <application>bash</application>, <application>zsh</application>, et pas mal d'autres) utiliseront normalement «&nbsp;<literal>$</literal>&nbsp;». L'administrateur système (le super-utilisateur) obtient le signe d'invite spécial «&nbsp;<literal>#</literal>&nbsp;»&nbsp;; cela permet à l'utilisateur de ne pas ignorer qu'il doit se montrer très, très prudent et précis dans les commandes qu'il lance, car, en tant qu'administrateur, il peut facilement causer des dommages parfois irréparables au système.
</para>

<para><emphasis role="bold">Utilisateur normal&nbsp;:
</emphasis></para>

<programlisting>
<computeroutput>
[tom@station1 ~]$
</computeroutput>
</programlisting>
<para><emphasis role="bold">Super-utilisateur&nbsp;:
</emphasis></para>
<programlisting>
<computeroutput>
[tom@station1 ~]#
</computeroutput>
</programlisting>

<para>
En tapant la commande <command>echo $SHELL</command> tom découvre qu'il utilise <foreignphrase>Bash</foreignphrase> (alias, le <foreignphrase>
<literal>B</literal>ourne <literal>A</literal>gain <literal>Sh</literal>ell</foreignphrase>). Dans cet exemple, la commande «&nbsp;<command>echo</command>&nbsp;» affiche la valeur de la variable <varname>$SHELL</varname> à l'écran. L'interpréteur <foreignphrase>
Bash</foreignphrase> est normalement l'interpréteur par défaut des systèmes 
<trademark class="copyright">Linux</trademark>.
</para>

<programlisting>
<computeroutput>[tom@station1 ~]$ </computeroutput><userinput>echo $SHELL</userinput>
<computeroutput>/bin/bash</computeroutput>
</programlisting>

<para>
Si le dossier de travail n'est pas indiqué par l'invite, la première commande importante que vous devriez connaître est <command>pwd</command> qui est une abréviation pour «&nbsp;<foreignphrase>Print Working
Directory</foreignphrase>&nbsp;» (afficher le dossier de travail). Cela indique le chemin complet comme vous pouvez le voir.
</para>
<programlisting>
<computeroutput>[tom@station1 ~]$ </computeroutput><userinput>pwd</userinput>
<computeroutput>/home/tom</computeroutput>
</programlisting>
</section>

<section id="commands"><title>Commandes</title>

<para>
Les commandes sont soit du code incorporé dans l'interpréteur lui-même, soit des programmes exécutables compilés, soit des scripts exécutables placés quelque part dans votre système. L'interpréteur de commande, quand vous l'ouvrez, va lire des variables d'environnement précises (vous pouvez en prendre connaissance en tapant <userinput>env</userinput> sur la ligne de commande). Quand vous lancez une commande, l'interpréteur va rechercher, dans l'ensemble des dossiers listés dans la variable <varname>PATH</varname>, le programme de la commande demandée. Si ce n'est ni une commande incorporée, ni un alias de commande, ni une fonction définie, ni un programme dans les dossiers définis par <varname>PATH</varname>, l'interpréteur renverra l'erreur «&nbsp;<computeroutput>command not found</computeroutput>&nbsp;» (commande introuvable).
</para>

<programlisting>
<computeroutput>[tom@station1 ~]$ </computeroutput><userinput>print help me</userinput>
<computeroutput>bash: print: command not found</computeroutput>
</programlisting>
<para>
Il y a de nombreuses commandes &mdash;&nbsp;peut-être même trop. Pour savoir combien vous en avez de disponibles, frappez simplement deux fois de suite la touche <keycap>Tab</keycap> dans le terminal&nbsp;; cela en affichera le nombre et vous demandera si vraiment vous voulez les voir toutes. Ne vous inquiétez pas&nbsp;: vous n'aurez jamais besoin de connaître la plupart d'entre elles &mdash;&nbsp;beaucoup sont appelées par d'autres commandes ou par l'intermédiaire de menus de l'interface graphique utilisateur (<acronym>GUI</acronym>). Personne ne peut se souvenir de toutes celles disponibles &mdash;&nbsp;et fondamentalement il n'y a aucun intérêt à cela&nbsp;&mdash;&nbsp;; la connaissance de juste une poignée vous aidera grandement sur tout système <trademark class="copyright">Linux</trademark>.
</para>

<para>
Les commandes distinguent la casse des caractères et sont normalement écrites en minuscules. Autre chose importante à savoir&nbsp;: beaucoup de commandes (par exemple, de copie, déplacement, liaison avec un périphérique, etc.) fonctionnent en mode «&nbsp;objet_origine vers objet_destination&nbsp;»&nbsp;:
</para>

<programlisting>
<userinput>cp /my/source/file /destination/file/or/directory</userinput>
<userinput>mv /from/here /to/there</userinput>
<userinput>mount /dev/mydevice /directory/to/mount/in</userinput>
</programlisting>

</section>

<section id="options"><title>Commutateurs et options</title>
<para>
Commutateurs et options servent à modifier les actions de la commande. Ils sont habituellement immédiatement précédés par un simple ou un double tiret court, et prennent la forme soit d'une lettre, soit d'un mot entier. Certaines commandes exigent des options, d'autres pas. Voici quelques exemples&nbsp;:
</para>

<simpara>Commande simple&nbsp;:
</simpara>
<programlisting>
<computeroutput>[tom@station1 ~]$ </computeroutput><userinput>ls</userinput>
</programlisting>

<simpara>Commande avec option abrégée&nbsp;:
</simpara>
<programlisting>
<computeroutput>[tom@station1 ~]$ </computeroutput><userinput>ls -a</userinput>
</programlisting>

<simpara>Commande avec options abrégées multiples&nbsp;:
</simpara>
<programlisting>
<computeroutput>[tom@station1 ~]$ </computeroutput><userinput>ls -a -h -i</userinput>
</programlisting>

<simpara>Commande avec options abrégées regroupées&nbsp;:
</simpara>
<programlisting>
<computeroutput>[tom@station1 ~]$ </computeroutput><userinput>ls -ahi</userinput>
</programlisting>

<simpara>Commande avec option longue&nbsp;:
</simpara>
<programlisting>
<computeroutput>[tom@station1 ~]$ </computeroutput><userinput>ls --all</userinput>
</programlisting>

<simpara>Commande avec plusieurs options longues&nbsp;:
</simpara>
<programlisting>
<computeroutput>[tom@station1 ~]$ </computeroutput><userinput>ls --all --human-readable --inode</userinput>
</programlisting>
<para>
Normalement, on regroupe les options abrégées si plus d'une est nécessaire. De plus, quelques options abrégées ont des équivalents en option longue effectuant la même action.
</para>
</section>

<section id="arguments"><title>Arguments</title>
<para>
Un argument est habituellement un objet surlequel la commande agit&nbsp;; le fait qu'une commande prenne un argument ne dépend que de celle-ci. Par exemple, la commande <command>ls</command> peut prendre un argument, mais si aucun n'est donné, la commande supposera que le dossier de travail actuel est l'argument et fera la liste de son contenu. Un exemple de commande qui ne prend pas d'argument est <command>true</command>&nbsp;: elle n'accepte que des options. Ainsi donc, les arguments varient selon les commandes et nombre d'entr'elles ont un argument par défaut.
</para>
</section>

<section id="strings"><title>Obtention d'aide avec les pages du Manuel</title>
<para>
Quand on se sert de la ligne de commande, il est pertinent de prendre l'habitude de se servir du système de pages du manuel <trademark class="copyright">Linux</trademark> incorporé, également dénommé pages «&nbsp;<foreignphrase>man</foreignphrase>&nbsp;». À première vue, elles peuvent paraître déconcertantes et très sibyllines. Soyez assurés pourtant &mdash;&nbsp;elles sont très utiles et nécessaires. En vous en servant, vous accélérerez vivement vos connaissances sur <trademark class="copyright">Linux</trademark>. Pour voir la page de manuel d'une commande, tapez simplement <userinput>man command</userinput> et un écran d'indications s'affichera. Pour parcourir une page de manuel, utilisez les touches fléchées et de défilement pour la dérouler, et la lettre «&nbsp;<keycap>q</keycap>&nbsp;» pour quitter. Il y a pas mal d'autres touches de navigation pour faire des recherches, aller au début, à la fin, etc.&nbsp;; cela dépend du programme de mise en page utilisé (en règle générale «&nbsp;<application>more</application>&nbsp;» ou «&nbsp;<application>less</application>&nbsp;», ce dernier étant le plus courant). Vous pouvez vous informer sur ces possibilités avancées en frappant la touche <keycap>h</keycap> (help) lorque votre navigation est en cours.
</para>
<para>
Sur toute page de manuel que vous regardez, vous retrouverez plusieurs en-têtes de paragraphe&nbsp;:
</para>
<simpara><emphasis role="bold">NAME&nbsp;:</emphasis> (NOM)</simpara>
<blockquote><para>
Le nom de la commande et souvent des commandes similaires pouvant être utiles.
</para></blockquote>

<simpara><emphasis role="bold">SYNOPSIS&nbsp;:</emphasis> (SYNOPTIQUE ou VUE d'ENSEMBLE)</simpara>
<blockquote><para>
Vous trouverez dans ce paragraphe la syntaxe détaillée pour lancer la commande de manière correcte. Vous devrez peut-être revoir le paragraphe OPTIONS, plus bas, pour obtenir des précisions. Beaucoup de commandes exigent la précision d'options pour fonctionner de façon tout à fait satisfaisante.
</para></blockquote>

<simpara><emphasis role="bold">DESCRIPTION&nbsp;:</emphasis></simpara>
<blockquote><para>
Généralement un résumé de la description technique détaillée de ce que fait la commande.
</para></blockquote>

<simpara><emphasis role="bold">OPTIONS&nbsp;:</emphasis></simpara>
<blockquote><para>
Sous cet en-tête, vous trouverez une liste des options longues ou abrégées acceptées par la commande. Il est pratiquement toujours nécessaire d'utiliser telle ou telle option avec une commande, c'est pourquoi ce paragraphe est de première importance. Il peut être assez long. Comme la plupart des commandes donnent une signification spécifique à leurs options, soyez attentifs au fait qu'une option donnée utilisée avec une commande peut avoir un tout autre sens lorsqu'elle est utilisée avec une autre commande.
</para></blockquote>

<simpara><emphasis role="bold">EXAMPLES&nbsp;:</emphasis>(EXEMPLES)</simpara>
<blockquote><para>
Pour les commandes peu courantes, je regarde pratiquement toujours ce paragraphe de peur de ficher en l'air quelque chose. Ce paragraphe, s'il existe, peut donner un meilleur éclairage à la syntaxe de la commande.
</para></blockquote>

<para>
Selon les commandes, il se peut qu'il y ait plus ou moins de paragraphes d'explications.
</para>
<para>
Apprendre <trademark class="copyright">Linux</trademark> peut se révéler de longue haleine, mais il ne fait pas de doute que vous le trouverez plaisant et gratifiant au fur et à mesure que vous découvrirez le contenu de ses impressionnantes possibilités.
</para>
</section>

<section id="help"><title>Aides supplémentaires</title>
<para>
Le système <trademark class="copyright">Linux</trademark> a été conçu à l'origine pour une utilisation en ligne de commande, et si vous savez comment trouver l'aide voulue, vous aurez accès à encore beaucoup plus de puissance que ne pourrait l'imaginer un utilisateur moyen. La commande <command>info</command>, si elle est installée sur votre machine, vous donne accès à une autre source d'information pour l'aide&nbsp;; elle s'appuie sur le système de documentation <application>Texinfo</application> qui incorpore la documentation officielle du projet <acronym>
GNU</acronym>. Quelques systèmes disposent à la fois de <command>man</command> et <command>info</command>. C'est une bonne idée que de les tester tous deux et de voir si l'un offre des informations plus à votre convenance. En règle générale, les pages <application>info</application> seraient plus faciles à comprendre que les pages <application>man</application>, même si dans certains cas les informations sont identiques. Pour utiliser le système d'aide <application>info</application>, tapez <command>info</command> <emphasis><command>commande</command></emphasis> ou seulement <command>info</command> pour mieux le connaître.
</para>
</section>
<section id="tab"><title>Touche de complémentation «&nbsp;Tab&nbsp;»</title>

<para>
Une autre caractéristique utile de la ligne de commande <trademark class="copyright">Linux</trademark> est la <emphasis>complémentation de commande</emphasis> et la <emphasis>complémentation de chemin</emphasis> avec <keycap>Tab</keycap>. Si vous n'êtes pas sûr de la façon dont s'épelle une commande ou un nom de fichier, vous pouvez taper seulement les deux trois lettres initiales de la commande et actionner alors la touche <keycap>Tab</keycap> pour voir comment l'interpréteur <application>Bash</application> vous vient en aide. Si les quelques lettres frappées désignent de façon univoque une commande, Bash finira le travail pour vous en terminant l'écriture&nbsp;; sinon, il vous proposera une liste de choix possibles.
</para>
<para>
En supposant, par exemple, que vous avez besoin de lancer une commande pour vous aider à configurer votre carte son&nbsp;; mais la seule chose dont vous vous souvenez est que cette commande débute par <command>syst...</command>. Frappez uniquement 
</para>
<programlisting>
<computeroutput>[tom@station1 ~]$ </computeroutput><userinput>syst</userinput>
</programlisting>

<para>
Ensuite, appuyez sur <keycap>Tab</keycap> (selon votre configuration, vous serez obligé peut-être d'appuyer deux fois)&nbsp;; en récompense, vous obtiendrez la sortie suivante&nbsp;:
</para>

<programlisting><computeroutput>
system-cdinstall-helper          system-config-rootpassword
system-config-authentication     system-config-samba
system-config-date               system-config-securitylevel
system-config-display            system-config-securitylevel-tui
system-config-kdump              system-config-selinux
system-config-keyboard           system-config-services
system-config-language           system-config-soundcard
system-config-lvm                system-config-time
system-config-network            system-config-users
system-config-network-cmd        system-control-network
system-config-packages           system-install-packages
system-config-printer            systool
</computeroutput></programlisting>

<para>
À partir de là, vous voyez le nom de la commande dont vous avez besoin&nbsp;: <command>system-config-soundcard</command>. Cela fonctionne également avec les chemins de fichiers. Pour utiliser cette fonctionnalité et percevoir sa façon d'opèrer, commencez par taper un nom de dossier &mdash;&nbsp; mais après avoir frappé deux/trois caractères, appuyez sur <keycap>Tab</keycap>  et regardez si <application>Bash</application> complète automatiquement pour vous. Si ce n'est pas le cas, cela est dû au fait que vous n'avez pas frappé assez de caractères pour différencier entre plusieurs choix possibles. Vous pouvez essayer d'ajouter quelques caractères de plus et appuyer sur <keycap>Tab</keycap> à nouveau&nbsp;; et ainsi de suite jusqu'à ce que <application>Bash</application> complète pour vous. Cela peut vraiment vous économiser un tas de frappes&nbsp;:
</para>
<para>
<userinput>
cat /usr/include/c++/4.0.4/i486-linux-gnu/bits/messages_members.h</userinput></para>
<para>devient</para>
<para>
<userinput>cat /u&xrArr;i&xrArr;c+&xrArr;&xrArr;0.&xrArr;i&xrArr;b&xrArr;m&xrArr;</userinput>
</para>
<para>
soit 22 frappes au lieu de 66&nbsp;!
</para>
</section>

<section id="history"><title>Historique de commande</title>
<para>
L'utilisation des touches fléchées peut aussi vous faciliter la vie. Dans <application>Bash</application>, elles sont reliées à ce qui est appelé <emphasis>l'historique des commandes</emphasis>&nbsp;: frapper «&nbsp;flèche vers le haut&nbsp;» vous ramènera à la commande précédente, et la frapper deux fois vous ramènera deux commandes auparavant. Bien évidemment, la touche «&nbsp;flèche vers le bas&nbsp;» fait l'opposé et vous déplace vers l'avant dans l'historique des commandes jusqu'à ce qu'il n'en reste plus. Pour voir tout ce qu'il y a dans l'historique des commandes, frappez <command>history</command> en ligne de commande&nbsp;; rappeler une commande n'importe où dans la liste peut se faire avec <keycap>Ctrl-R</keycap> et la frappe d'une partie de cette commande. Une commande peut aussi être rappelée en notant son numéro d'ordre dans l'affichage de <command>history</command> et en tapant un point d'exclamation suivi du numéro d'ordre relevé. Il y a beaucoup d'autres raccourcis disponibles&nbsp;; vous pouvez en prendre connaissance dans le paragraphe «&nbsp;HISTORY&nbsp;» de la page de manuel relative à <emphasis>bash</emphasis>.
</para>
</section>
<section id="basic_commands"><title>Quelques commandes de base avec options courantes</title>
<informaltable frame="all">
<tgroup cols="4">
<colspec colnum="1" align="center"></colspec>
<colspec colnum="2" colwidth="2in"></colspec>
<colspec colnum="3" align="center"></colspec>
<colspec colnum="4" colwidth="2in"></colspec>
<thead>
<row>
<entry><emphasis> Commande </emphasis></entry>
<entry>&nbsp;<emphasis> Description </emphasis>&nbsp;</entry>
<entry><emphasis> Options courantes </emphasis></entry>
<entry><emphasis> Description </emphasis></entry>
</row>
</thead>
<tbody>
<row>
<entry ><emphasis>pwd</emphasis></entry>
<entry><para>Afficher le nom du répertoire de travail en cours.</para></entry>
<entry>--help</entry>
<entry><para>Afficher un message d’aide.</para></entry>
</row>
<row>
<entry><emphasis>man</emphasis></entry>
<entry>Afficher des pages de manuel</entry>
<entry>[1-8]</entry>
<entry>Limiter la recherche au n° de section indiqué.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-a</entry>
<entry>Rechercher l'information dans toutes les sections.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-k</entry>
<entry>Rechercher les pages contenant le mot-clé indiqué.</entry>
</row>
<row>
<entry><emphasis>cd</emphasis></entry>
<entry>Changer de dossier.</entry>
<entry>..</entry>
<entry>Aller au dossier au niveau immédiatement au-dessus.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>/</entry>
<entry>Aller à la racine du système de fichiers.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>~ <emphasis>&nbsp;ou&nbsp;</emphasis> rien</entry>
<entry>Aller au dossier principal de l'utilisateur actuel.</entry>
</row>
<row>
<entry><emphasis>ls</emphasis></entry>
<entry>Afficher le contenu d’un répertoire.</entry>
<entry>-a <emphasis>&nbsp;ou&nbsp;</emphasis> --all</entry>
<entry>Afficher tous les fichiers, même cachés.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-l</entry>
<entry>Afficher tous les détails pour chaque fichier.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-h <emphasis>&nbsp;ou&nbsp;</emphasis> --human-readable</entry>
<entry>Condenser l'affichage de la taille des fichiers en macro unités (avec l).</entry>
</row>
<row>
<entry><emphasis>cp</emphasis></entry>
<entry> Copier des fichiers et des répertoires.</entry>
<entry>-i <emphasis>&nbsp;ou&nbsp;</emphasis> --interactive</entry>
<entry>Interroger l’utilisateur avant d’écraser des fichiers.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-r <emphasis>&nbsp;ou&nbsp;</emphasis> -recursive</entry>
<entry>Copier récursivement les répertoires.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-a <emphasis>&nbsp;ou&nbsp;</emphasis> --archive</entry>
<entry>Préserver structure et attributs du fichier original.</entry>
</row>
<row>
<entry><emphasis>mv</emphasis></entry>
<entry>Déplacer ou renommer des fichiers.</entry>
<entry>-i <emphasis>&nbsp;ou&nbsp;</emphasis> --interactive</entry>
<entry>Interroger l’utilisateur avant d’écraser des fichiers.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-u <emphasis>&nbsp;ou&nbsp;</emphasis> --update</entry>
<entry>Déplacer sauf à écraser un fichier plus récent.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-f <emphasis>&nbsp;ou&nbsp;</emphasis> --force</entry>
<entry>Déplacer le fichier dans tous les cas sans demande de confirmation.</entry>
</row>
<row>
<entry><emphasis>rm</emphasis></entry>
<entry>Effacer des fichiers</entry>
<entry>-r <emphasis>&nbsp;ou&nbsp;</emphasis> --recursive</entry>
<entry>Effacer récursivement les sous-répertoires.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-f <emphasis>&nbsp;ou&nbsp;</emphasis> --force</entry>
<entry> Ne pas interroger l’utilisateur avant d'effacer.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-i <emphasis>&nbsp;ou&nbsp;</emphasis> --interactive</entry>
<entry>Confirmer l’effacement de chaque fichier.</entry>
</row>
<row>
<entry><emphasis>mkdir</emphasis></entry>
<entry> Créer des répertoires.</entry>
<entry>-p <emphasis>&nbsp;ou&nbsp;</emphasis> --parents</entry>
<entry>Créer  les  répertoires  parents s’ils manquent.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-m <emphasis>&nbsp;ou&nbsp;</emphasis> --mode=MODE</entry>
<entry>Créer les répertoires avec le mode d’accès indiqué.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-v <emphasis>&nbsp;ou&nbsp;</emphasis> --verbose</entry>
<entry>Afficher un message pour chaque répertoire créé.</entry>
</row>
<row>
<entry><emphasis>rmdir</emphasis></entry>
<entry>Supprimer des répertoires vides.</entry>
<entry>-p <emphasis>&nbsp;ou&nbsp;</emphasis> --parents</entry>
<entry>Effacer les répertoires parents si vides.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-v <emphasis>&nbsp;ou&nbsp;</emphasis> --verbose</entry>
<entry>Afficher une demande de confirmation.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>--ignore-fail-on-non-empty</entry>
<entry>Opérer l'effacement même si des fichiers sont encore dans le dossier.</entry>
</row>
<row>
<entry><emphasis>cat</emphasis></entry>
<entry>Concaténer des fichiers et les afficher sur la sortie standard.
</entry>
<entry>-b <emphasis>&nbsp;ou&nbsp;</emphasis> --number-nonblank</entry>
<entry>Numéroter les lignes ayant un contenu.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-n <emphasis>&nbsp;ou&nbsp;</emphasis> --number</entry>
<entry>Numéroter toute les lignes.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-s <emphasis>&nbsp;ou&nbsp;</emphasis> --squeeze-blank</entry>
<entry>Remplacer des lignes blanches consécutives par une seule.</entry>
</row>
<row>
<entry><emphasis>locate</emphasis></entry>
<entry>Rechercher des fichiers par leur nom.</entry>
<entry>-c <emphasis>&nbsp;ou&nbsp;</emphasis> --count</entry>
<entry>N'afficher que le décompte des fichiers trouvés.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-i <emphasis>&nbsp;ou&nbsp;</emphasis> --ignore-case</entry>
<entry>Ne pas distinguer la casse dans le nom.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-S <emphasis>&nbsp;ou&nbsp;</emphasis> --statistics</entry>
<entry>Afficher les statistiques de la base de données des noms de fichiers.</entry>
</row>
<row>
<entry><emphasis>less</emphasis></entry>
<entry>Afficher page par page en autorisant un retour en arrière.</entry>
<entry>-N <emphasis>&nbsp;ou&nbsp;</emphasis>--LINE-NUMBERS</entry>
<entry>Afficher le numéro de la ligne en début de celle-ci.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-s <emphasis>&nbsp;ou&nbsp;</emphasis> --squeeze-blank-lines</entry>
<entry>Condense les lignes blanches consécutives en une seule.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-E <emphasis>&nbsp;ou&nbsp;</emphasis> --QUIT-AT-EOF</entry>
<entry>Fin automatique de <application>
less</application> une fois la fin du fichier atteinte.</entry>
</row>
<row>
<entry><emphasis>grep</emphasis></entry>
<entry>Afficher les lignes correspondant avec un motif donné.</entry>
<entry>-i <emphasis>&nbsp;ou&nbsp;</emphasis> --ignore-case</entry>
<entry>Ne pas distinguer la casse dans le motif.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-R <emphasis>&nbsp;ou&nbsp;</emphasis> -r <emphasis>&nbsp;ou&nbsp;</emphasis> --recursive</entry>
<entry>Lire récursivement tous les fichiers du dossier.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-v <emphasis>&nbsp;ou&nbsp;</emphasis> --invert-match</entry>
<entry>Ne retenir que les lignes NE comportant PAS le motif.</entry>
</row>
<row>
<entry><emphasis>mount</emphasis></entry>
<entry>Monter un système de fichiers.</entry>
<entry>-o</entry>
<entry>Préciser des options additionnelles de montage.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-t</entry>
<entry>Préciser le type de système de fichiers.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-a</entry>
<entry>Monter tous les systèmes de fichiers mentionnés dans <filename>fstab</filename>.</entry>
</row>
<row>
<entry><emphasis>umount</emphasis></entry>
<entry>Démonter des systèmes de fichiers.</entry>
<entry>-t</entry>
<entry>Préciser le type de système de fichiers.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-v</entry>
<entry>Activer le mode verbeux.</entry>
</row>
<row>
<entry></entry>
<entry></entry>
<entry>-r</entry>
<entry>En cas d'échec, essayer de remonter en lecture seule.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>

<section id="resources"><title>Ressources</title>
<itemizedlist spacing="compact">
<listitem><para><ulink url="http://www.linuxcommand.org/learning_the_shell.php">Learning the Shell Tutorial</ulink>&nbsp;(Tutoriel de l'interpréteur de commandes)</para></listitem>
<listitem><para><ulink url="http://www.pathname.com/fhs/">The Filesystem Hierachy Standard</ulink>&nbsp;(Norme relative à la hiérarchie des systèmes de fichiers)</para></listitem>
</itemizedlist>
</section>

<section id="auteur"><title>L'auteur</title>
<blockquote>
<para>
Joey est né à Phœnix et a commencé à programmer à l'âge de quatorze ans sur un <trademark class="copyright">Timex Sinclair 1000</trademark>. Il espérait pouvoir tirer quelque chose de ce modèle d'ordinateur ancien. Maîtrisant rapidement le BASIC et l'assembleur, Joey est devenu programmeur en 1990 et a ajouté le COBOL, le Fortran et le Pascal à son répertoire de langages de programmation. Depuis lors, il se passionne pour presque tous les aspects de l'informatique. Il s'est perfectionné et a découvert <trademark class="copyright">RedHat Linux</trademark> en 2002, quand on lui a donné une version <literal>6</literal> de <trademark class="copyright">RedHat</trademark>. Ce fut le début d'une nouvelle passion centrée sur <trademark class="copyright">Linux</trademark>. Actuellement, Joey termine sa formation en gestion de réseau sous <trademark class="copyright">Linux</trademark> et travaille sur le campus pour la RedHat Academy de l'université, en Arizona. Il fait aussi partie de l'équipe de Linux Gazette comme coordonnateur de miroirs.</para>
</blockquote>
</section>
<colophon id="adapt"><title>Adaptation française de la Gazette&nbsp;Linux</title>

<para>
L'adaptation française de ce document a été réalisée dans le cadre du <citetitle>Projet de traduction de la Gazette&nbsp;Linux</citetitle>.
</para>

<para>
Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site&nbsp;: <ulink url="http://wiki.traduc.org/Gazette_Linux"/>.
</para>

<para>
Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.
</para>
</colophon>
</article>
