[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

debian-guide_fr-1.0_chap7.sgml



<chapt> Les bases

<p>
Il est maintenant temps d'explorer le système plus en détail. Vous
avez vu comment se loguer et éteindre le système. Dans ce chapitre,
nous allons explorer la ligne de commandes sous Linux, comment Linux
gère fichiers et répertoires et quelques règles de base pour vous
identifier des autres.

<sect> La ligne de commandes et les pages de <prgn>man</prgn>

<p>
Nous avons déjà discuté de la ligne de commandes - qui sont,
rappelons-le, les commandes que vous tapez après le prompteur du
shell. Cette partie décrit la structure de lignes de commandes
beaucoup plus compliquées.

<p>
Une ligne de commandes minimale contient juste le nom d'une commande,
comme <prgn>whoami</prgn>. Mais bien d'autres choses sont
possibles. Par exemple, vous pouvez taper <prgn>man
whoami</prgn>. Cette commande appelle l'aide en ligne de la commande
<prgn>whoami</prgn> (Vous devrez vous déplacer à l'aide de la touche
<em>espace</em> page par page et taper sur <em>q</em> pour
sortir). Une commande plus compliquée est <prgn>man -k
PostScript</prgn>. Cette ligne de commandes se compose de trois
parties. Elle commence par le nom de commande
<prgn>man</prgn>. Ensuite, on trouve une <em>option</em> ou
<em>indicateur</em>, <prgn>-k</prgn>, suivi d'un <em>argument</em>,
<prgn>PostScript</prgn>. Certains disent que tout sauf le nom de la
commande est <em>paramètre</em> de la commande. Ainsi, les options et
les arguments sont tous deux des paramètres.

<p>
Les options changent le comportement d'une commande, en activant une
fonctionnalité particlière.  Généralement, on trouve un « - » les
précédant. Les utilitaires GNU ont aussi une « forme longue » pour les
options; la forme longue de <prgn>-k</prgn> est
<prgn>--apropos</prgn>. Vous pouvez entrer <prgn>man -h</prgn> ou
<prgn>man --help</prgn> pour obtenir la liste complète des options de
la commande <prgn>man</prgn>. Chaque commande a sa propre liste
d'options, bien qu'elle partage généralement les options
<prgn>--help</prgn> et <prgn>--version</prgn>. Certaines commandes,
comme <prgn>tar</prgn>, ne demande pas de « - » devant leurs options
pour des raisons historiques.

<p>
Tout ce qui n'est pas une option et qui n'est pas le nom d'une
commande est un <em>argument</em> (et dans le cas présent,
<prgn>PostScript</prgn>). Les arguments ont des tas de finalités ;
dans la plupart des cas, ce sont les noms de fichiers dont la commande
doit s'occuper.  Dans ce cas, <prgn>PostScript</prgn> est le mot que
l'on fait chercher à la commande <prgn>man</prgn>. Dans le cas de
<prgn>man whoami</prgn>, l'argument est le nom de la commande dont
vous recherchez des informations.

<p>
Voici un résumé de la ligne de commande <prgn>man -k PostScript</prgn>

<p>
<list>
<item> <prgn>man</prgn>
<p>
Le nom de la commande, demande à l'ordinateur d'aller chercher les
pages du manuel. Ceci est une documentation des commandes. Par
exemple, <prgn>man whoami</prgn> ira vous chercher la documentation de
la commande <prgn>whoami</prgn>.
<item><prgn>-k</prgn>
<p>
L'option, change le comportement de la commande
<prgn>man</prgn>. Normalement, <prgn>man</prgn> s'attend à un nom de
commande, comme <prgn>whoami</prgn>, comme argument et va chercher la
documentation de cette commande. Mais avec l'option <prgn>-k</prgn> ou
<prgn>--apropos</prgn>, il s'attend à ce que l'option soit un
mot-clé. Il sort alors la liste de toutes les pages de manuel le
comportant.
<item><prgn>PostScript</prgn>
<p>
est l'argument; en raison de la présence de l'option <prgn>-k</prgn>,
c'est le mot-clé à rechercher.
</list>

<p>
Allez-y et taper la commande <prgn>man -k PostScript</prgn> et vous
verrez apparaître une liste de pages de manuel de votre système qui
ont un rapport avec le postscript. Si vous n'avez pas installé de
nombreux logiciels, il se peut que vous voyez apparaître à la place :
<prgn>PostScript: nothing appropriate</prgn> (<prgn>PostScript: rien
de trouvé</prgn>).
</sect>

<sect> Description de la ligne de commande

<p>
Remarque: vous pouvez sauter cette partie si vous voulez avancer rapidement.

<p>
Il existe une façon concise et traditionnelle de décrire la
<em>syntaxe</em> d'une commande. La <em>syntaxe</em> veut dire la
façon correcte de combiner les options variées ainsi que les
arguments. Par exemple, si vous tapez <prgn>man man</prgn> pour
obtenir la page de manuel de <prgn>man</prgn>, vous apercevrez un
certain nombre de descriptions de syntaxe débutant par le nom de
commande <prgn>man</prgn>. Une d'entre elle devrait ressembler à ceci:

<p>
<prgn>man -k [-M path] keyword ...</prgn>

<p>
Tout ce qui se trouve entre crochet ([]) est optionnel. Dans ce cas,
il n'est pas nécessaire d'utiliser l'option <prgn>-M</prgn> mais si
vous le faîtes, il est alors nécessaire d'utiliser un argument de type
<prgn>path</prgn><footnote>C'est-à-dire le chemin d'accès en bon
français</footnote>. Vous devez utiliser l'option <prgn>-k</prgn> et
l'argument <prgn>keyword</prgn> (mot-clé). Les <prgn>...</prgn>
signifie qu'il peut y avoir encore beaucoup de choses à la suite,
notamment plusieurs mots-clés.

<p>
Regardons d'un peu plus près les descriptions complexes de la page de
manuel de <prgn>man</prgn>:

<example>
man [-c|-w|-tZT device] [-adhu7V]
[-m system[,...]] [-L locale] [-p string]
[-M path] [=P pager] [-r prompt] [-S list]
[-e extension] [[section] page ...] ...
</example>

<p>
Il n'est pas nécessaire d'aller plus en avant (et ne vous inquiétez
pas quant à sa signification) mais attirez votre attention sur
l'organisation de la description.

<p>
Premièrement, ce rassemblement en grappe d'options veut généralement
dire que vous pouvez en utiliser une ou plusieurs dans différentes
combinaisons. Ainsi, <prgn>-adhu7V</prgn> veut tout simplement dire
que vous pouvez aussi n'utiliser que <prgn>-h</prgn>. Bien-sûr, vous
pouvez utiliser toutes les combinaisons. Cette description ne rend pas
forcément les choses très claires. Par exemple, <prgn>-h</prgn> est
incompatible avec les autres options mais vous pouvez faire <prgn>man
-du</prgn>. Malheureusement, cette description de format ne rend pas
cette approche très claire.

<p>
Ensuite, le symbole | signifie « ou ». Ainsi, vous pouvez utiliser
l'option <prgn>-c</prgn>, l'option <prgn>-w</prgn> <em>ou</em>
l'option <prgn>-tZT</prgn>, suivi d'un argument <prgn>device</prgn>.

<p>
Enfin, remarquez bien que vous devez respecter les crochets car ils
indiquent les unités optionnelles. Ainsi, si vous avez une
<prgn>section</prgn>, vous devez aussi avoir une <prgn>page</prgn>
parce que <prgn>page</prgn> n'est pas optionnelle à l'intérieur du
groupe <prgn>[[section] page]</prgn>.

<p>
Il n'est pas nécessaire de mémoriser tout cela. Il suffit juste de
revenir à cette partie pour lire la documentation.
</sect>

<sect> Fichiers et répertoires

<p>
les <em>fichiers</em> sont une facilité pour stocker et organiser
l'information, analogue aux documents papier. Ils sont organisés en
<em>répertoires</em> qui sont appelés <em>dossiers</em> sur certains
autres systèmes. Regardons d'un peu plus près l'organisation des
fichiers sur un système Debian:

<p>
<list>
<item> /
<p>
Un simple / représente la répertoire racine. Tous les autres fichiers
et répertoires sont contenus dans le répertoire racine. Si vous venez
du monde DOS ou Windows, / est similaire à ce que le C: signifie pour
le DOS qui est la racine du système de fichiers. Une différence
importante entre DOS et Linux est que DOS garde toujours C: (pour le
premier disque dur), A: (premier lecteur de disquettes) et D: (soit le
lecteur de cédérom soit le second disque dur) alors que Linux organise
tous ses fichiers autours de la même racine /.  <item>
<prgn>/home/janeq</prgn>
<p>
C'est le répertoire personnel de l'utilisateur <em>janeq</em>. En
lisant de gauche à droite, pour aller dans ce répertoire, on commence
dans le répertoire racine, puis dans le répertoire <prgn>home</prgn>
et enfin dans celui de <prgn>janeq</prgn>.
<item> <prgn>/etc/X11/XF86Config</prgn>
<p>
C'est le fichier de configuration du système X-Window. Il réside dans
le sous-répertoire <prgn>X11</prgn> du répertoire
<prgn>/etc</prgn>. <prgn>/etc</prgn> est lui-même un sous-répertoire du
répertoire racine /.
</list>

<p>
<em>Choses importantes à retenir</em>

<p>
<list>
<item>
  Les noms de fichiers sont sensibles à la casse utilisées. Cela veut
  dire que MONFICHIER et MonFichier sont différents.
<item>
  Le répertoire racine (<em>root</em> en anglais) se réfère uniquement
  à /. Ne confondez pas avec le root de l'utilisateur root,
  l'utilisateur du sytème avec les « supers pouvoirs ».  <item>Chaque
  répertoire a un nom, qui peut contenir n'importe quels lettres ou
  symboles <em> à l'exception de </em> /. Le répertoire racine est une
  exception; son nom est / (prononcé « slash » ou « répertoire racine
  » ou « répertoire root ») et il ne peut être renommé.
<item>
  Bien que vous puissiez utiliser n'importe quels lettres ou symboles
  pour un nom de fichier, en pratique c'est une assez mauvaise
  idée. Il est souhaîtable d'éviter les caractères qui ont souvent une
  signification particulière dans les lignes de commandes comme
  <prgn>{ } ( ) [ ] ' ` " \ / > < | ; ! # & ^ * %</prgn>
<item>
  Évitez d'ajouter des espaces dans les noms de fichiers. Si vous
  désirez séparer les mots dans un nom, les choix les meilleurs sont
  la période, l'hyphénation ou le tiret souligné « _ ». Vous pouvez
  aussi mettre en majuscule le début de chaque mot comme
  dans <prgn>CommeCeci</prgn>.
<item>
  Chaque fichier et répertoire sont désignés par un <em>nom de fichier
  pleinement qualifié</em>, un <em>nom de fichier absolu</em> ou un
  <em>chemin</em> qui donne la séquence des répertoires que l'on doit
  traversé pour atteindre le fichier. Les trois termes sont
  synonymes. Tous les noms de fichiers absolus commencent par le
  répertoire racine / et il y a un / devant chaque répertoire ou
  fichier du nom de fichier. Le premier / est le nom du répertoire
  mais les autres sont de simples séparateurs pour distinguer les
  parties du nom de fichier.
<item>
  Les noms utilisés portent parfois à confusion. Prenons l'exemple
  suivant: 
<example>
/usr/share/keytables/us.map.gz
</example>
  C'est un nom de fichier pleinement qualifié. Pourtant, certaines
  personnes le designent comme un <em>chemin</em>. D'autres personnes
  s'en servent pour désigner le fichier <prgn>us.map.gz</prgn> comme
  un seul nom de fichier.
<item>
  Il y a aussi une autre utilisation du mot
  <em>chemin</em><footnote><em>path</em> en anglais. À connaître aussi
  absolument.</footnote>. Mais le contexte est toujours suffisamment
  clair pour faire la distinction.
<item>
  Les répertoires sont rangés sous forme d'arbre. Tous les noms de
  fichiers absolus commencent avec le répertoire racine. Le répertoire
  racine possède un certain nombre de branches, comme
  <prgn>/etc</prgn> et <prgn>/usr</prgn>. Ces sous-répertoires se
  subdivisent eux-mêmes en branches en de nombreux sous-répertoires,
  comme <prgn>/etc/init.d</prgn> et
  <prgn>/usr/local</prgn>. L'ensemble est appelé <em>l'arbre des
  répertoires</em>.
<item>
  Vous pouvez faire l'analogie avec un nom de fichier absolu et la
  route partante de la base de l'arbre (/) à la fin d'une branche (le
  fichier). Vous entendrez aussi parler certaines personnes de l'arbre
  des répertoires comme d'un <em> arbre famillial</em>. Certains
  répertoires ont des « parents » et un chemin montre l'arbre
  généalogique complet.
<item>
  Il existe aussi des chemins relatifs qui commencent ailleurs que
  dans le répertoire racine. On y reviendra plus tard.
<item>
  Aucun répertoire ne correspond à un périphérique physique comme
  votre disque dur. Ceci diffère profondément du DOS et de Windows
  pour qui tout chemin commence par un nom de périphérique comme
  C:\. L'arbre des répertoires est une abstraction du périphérique
  matériel et vous pouvez donc l'utiliser sans savoir ce qu'il y a
  dessous. Tous vos fichiers peuvent être contenus dans un disque - ou
  vous pouvez très bien avoir vingt disques, certains connectés sur
  des ordinateurs différents répartis n'importe où sur le réseau. Vous
  ne pouvez deviner en jetant juste un coup d'oeil sur l'arbre des
  répertoires sur quel(s) périphérique(s) matériel(s) se trouvent vos
  fichiers.
</list>

<p>
Ne vous inquiétez si tout ceci n'est pas complètement clair pour vous:
il y a de nombreux exemple à venir.

<sect1> Utilisation des fichiers: un tutoriel

<p>
Pour utiliser votre système, vous devrez connaître comment créer,
déplacer, renommer et détruire fichiers et répertoires. Cette partie a
pour but de montrer comment le faire avec les commandes standards de
Debian.

<p>
La meilleure méthode d'apprentissage est encore d'essayer. Tant que
vous n'êtes pas root (et vous n'avez pas maintenant à créer
d'importants fichiers personnels), vous ne pouvez faire de catastrophe
irrémédiable. Lancez-vous - tapez chacune de ces commandes après le
prompteur et appuyer ensuite sur la touche <em>entrée</em>:

<p>
<example>
pwd
</example>

<p>
Le répertoire en cours est toujours considéré comme le <em>répertoire
courant de travail</em> pour le shell que vous utilisez. Vous pouvez
toujours le visualiser à l'aide de la commande <prgn>pwd</prgn> qui
signifie <em>Print Working Directory</em> (affiche le répertoire de
travail). <prgn>pwd</prgn> affiche donc le nom du répertoire dans
lequel vous travaillez - et probablement <prgn>/home/votrenom</prgn>.

<p>
<example>
ls
</example>

<p>
<prgn>ls</prgn> signifie <em>list</em> (affiche) comme pour <em>list
files</em> (affiche les fichiers). Lorsque vous tapez la commande
<prgn>ls</prgn>, le système renvoie une liste de tous les fichiers de
votre répertoire courant. Si vous venez d'installer Debian, votre
répertoire de travail est certainement vide et <prgn>ls</prgn> ne
renvoie rien en sortie car il n'y a pas de fichier à afficher.

<p>
<example>
cd /
</example>

<p>
<prgn>cd</prgn> signifie <em>change directory</em> (change de
répertoire). Dans ce cas, on lui a demandé de changer pour le
répertoire racine.

<p>
<example>
pwd
</example>

<p>
Ceci pour vérifier que vous êtes bien dans le répertoire racine.

<p>
<example>
ls
</example>

Pour jeter un coup d'oeil au contenu de /.

<p>
<example>
cd
</example>

<p>
Taper <prgn>cd</prgn> sans argument sélectionne votre répertoire
personnel - <prgn>/home/votrenom</prgn> - comme répertoire
courant. Essayez <prgn>pwd</prgn> pour vérifier.

<p>
Avant de continuer, il vous faut savoir qu'il y a vraiment deux sortes
de fichiers. Certains d'entre eux commencent par /, le répertoire
racine, comme <prgn>/etc/profile</prgn>. Ils sont appelés <em>noms de
fichiers absolus</em> car ils se réfèrent au même fichier quelque soit
le répertoire courant. L'autre sorte de fichiers sont les <em>fichiers
relatifs</em>.

<p>
Seuls deux répertoires ne sont utilisés qu'avec des noms de fichiers
relatifs: « . » et « .. ». Le répertoire . se réfère au répertoire
courant et .. au répertoire parent. Ce sont des raccourcis. Ils
existent dans <em>tous</em> les répertoires. Même le répertoire racine
à un répertoire parent - c'est son propre parent !

<p>
Ainsi, tous les fichiers comprenant . ou .. sont <em>relatifs</em> car
leur expression dépend du répertoire courant. Si je suis dans
<prgn>/usr/bin</prgn> et que je tape <prgn>../etc</prgn>, je me réfère
à <prgn>/usr/etc</prgn>. Si je suis dans <prgn>/var</prgn> et que je
tape <prgn>../etc</prgn>, je me réfère à <prgn>/etc</prgn>. Remarquez
bien que le nom de fichier sans le répertoire racine possède
implicitement à son commencement ./ . Ainsi, vous pouvez taper
indifféremment <prgn>/local/bin</prgn> ou bien
<prgn>./local/bin</prgn>, ce qui signifie exactement la même chose.

<p>
Un dernier petit truc: le <em>tilda</em> ~ est équivalent à votre
répertoire personnel. Ainsi, taper <prgn>cd ~</prgn> revient au même
que taper <prgn>cd</prgn> sans argument. Vous pouvez donc taper
<prgn>cd ~/divers/monsousrepertoire</prgn> à la place de <prgn>cd
/home/votrenom/divers/monsousrepertoire</prgn>. De façon analogue,
<prgn>~myuser</prgn> est l'équivalent du répertoire personnel de
l'utilisateur <em>myuser</em> qui est probablement quelque chose comme
<prgn>/home/myuser</prgn>; ainsi, <prgn>~myuser/docs/debian.ps</prgn>
est équivalent à <prgn>/home/myuser/doc/debian.ps</prgn>.

<p>
Il y a encore quelques commandes à essayer maintenant que vous
maîtriser les chemins relatifs. Tapez <prgn>cd</prgn> pour revenir
dans votre répertoire personnel.

<p>
<example>
mkdir divers
</example>

<p>
Cela fabrique dans votre répertoire personnel un répertoire nommé
<prgn>divers</prgn>. Vous allez utiliser ce répertoire pour essayer
quelques autres commandes. Vous pouvez essayer <prgn>ls</prgn> pour
vérifier que votre nouveau répertoire existe bien.

<p>
<example>
cd divers
</example>

<p>
Ceci change le répertoire vers <prgn>divers</prgn>.

<p>
<example>
mkdir monsousrepertoire
</example>

<p>
Ceci crée un sous-répertoire de <prgn>divers</prgn>.

<p>
<example>
cp /etc/profile .
</example>

<p>
<prgn>cp</prgn> est un raccourci pour <em>copy</em>
(copier). <prgn>/etc/profile</prgn> est juste un fichier quelconque de
votre système. Ne vous souciez pas de ce qu'il fait pour le
moment. Nous l'avons recopié dans . (rappelez-vous que . signifie
simplement « le répertoire dans lequel je me trouve maintenant »
c'est-à-dire le répertoire courant de travail). Donc, ceci crée une
copie de <prgn>/etc/profile</prgn> et la place dans votre répertoire
<prgn>divers</prgn>. Essayez de taper <prgn>ls</prgn> pour vérifier
qu'il y a bien un fichier appelé <prgn>profile</prgn> dans votre
répertoire courant de travail au même niveau que le répertoire
<prgn>monsousrepertoire</prgn>.

<p>
<example>
more profile
</example>

<p>
Ceci vous permet de visualiser le contenu du fichier
<prgn>profile</prgn>. <prgn>more</prgn> est utilisé pour visualiser le
contenu des fichiers textes. Il est appelé <prgn>more</prgn> car il ne
montre qu'une page d'écran du fichier à la fois et il faut appuyer sur
la barre d'espace pour visualiser la suite. <prgn>more</prgn> sortira
de lui-même lorsqu'il aura atteint la fin du fichier ou lorsque vous
aurez taper sur q (<em>quit</em> pour quitter).

<p>
<example>
more /etc/profile
</example>

<p>
va s'assurer que la copie est bien conforme à l'original.

<p>
<example>
mv profile monsousrepertoire
</example>

<p>
<prgn>mv</prgn> signifie <em>move</em> (déplacer). Vous avez déplacé
le fichier <prgn>profile</prgn> du répertoire courant dans le
sous-répertoire <prgn>monsousrepertoire</prgn> que vous avez créé
précédemment.

<p>
<example>
ls
</example>

<p>
vérifie qu'il n'existe plus de fichier <prgn>profile</prgn> dans le
répertoire courant.

<p>
<example>
ls monsousrepertoire
</example>

<p>
s'assure que <prgn>profile</prgn> a bien été déplacé dans le
répertoire <prgn>monsousrepertoire</prgn>.

<p>
<example>
cd monsousrepertoire
</example>

<p>
Ceci change de répertoire vers le répertoire
<prgn>monsousrepertoire</prgn>.

<p>
<example>
mv profile myprofile
</example>

<p>
Remarquez bien qu'à l'instar de nombreux autres systèmes, il n'y a pas
de différence entre renommer un fichier et le déplacer. Ainsi, on ne
trouve pas de commande <prgn>rename</prgn> (renomme). Signalons aussi
que le second argument peut aussi bien être un répertoire pour
déplacer le fichier dedans qu'un nom de fichier pour le
renommage. <prgn>cp</prgn> fonctionne de la même façon.

<p>
Comme d'habitude, vous pouvez taper <prgn>ls</prgn> pour regarder le
résultat.

<p>
<example>
mv myprofile ..
</example>

<p>
De la même façon que . signifie « le répertoire où je suis maintenant
», .. signifie « le parent du répertoire courant ». Et dans le cas
présent, le répertoire <prgn>divers</prgn> créé précédemment. Utilisez
<prgn>ls</prgn> pour vérifier où se trouve <prgn>myprofile</prgn>
maintenant.

<p>
<example>
cd ..
</example>

<p>
Change de répertoire vers le répertoire parent, c'est-à-dire ici
<prgn>divers</prgn> où vous venez de déplacer <prgn>myprofile</prgn>.

<p>
<example>
rm myprofile
</example>

<p>
<prgn>rm</prgn> signifie <em>remove</em> (effacer) donc cela efface le
fichier <prgn>myprofile</prgn>. Faîtes très attention ! Détruire un
fichier sur un système GNU/Linux est <em>définitif</em> car il n'y a
pas de fonction inverse. Si vous effacez un fichier, c'est fini <em> à
jamais</em>... Prenez bien vos précautions.... On répète: détruire un
fichier sur un système GNU/Linux est <em>définitif</em> car il n'y a
pas de fonction inverse. Si vous effacez un fichier, c'est fini <em> à
jamais</em>... Prenez bien vos précautions<footnote>Relisez-le encore
une fois: détruire un fichier sur un système GNU/Linux est
<em>définitif</em> car il n'y a pas de fonction inverse. Si vous
effacez un fichier, c'est fini <em> à jamais</em>... Prenez bien vos
précautions....</footnote>....

<p>
<example>
rmdir monsousrepertoire
</example>

<p>
<prgn>rmdir</prgn> est la même chose que <prgn>rm</prgn> mais pour les
répertoires. Remarquez que <prgn>rmdir</prgn> ne fonctionne qu'avec
des répertoires vides. Si le répertoire contient des fichiers, vous
devez les détruire en premier ou bien utiliser <prgn>rm -r</prgn> à la
place de <prgn>rmdir</prgn>.

<p>
<example>
cd ..
</example>

<p>
Ceci vous permet de sortir du répertoire courant et de vous déplacer
dans le répertoire parent. Maintenant vous pouvez taper la séquence
suivante:

<p>
<example>
rmdir divers
</example>

<p>
Ceci détruira les derniers restes de notre essai.

<p>
Nous savons maintenant comment créer, copier, déplacer, renommer et
détruire fichiers et répertoires. Nous avons aussi appris quelques
raccourcis comme taper simplement <prgn>cd</prgn> pour revenir dans
son répertoire personnel et comment . et .. désignent respectivement
le répertoire courant et le répertoire parent. Vous devez aussi
retenir les concepts de répertoire racine, ou /, et de l'alias ~ pour
votre répertoire personnel.
</sect1>

<sect1> Fichiers cachés et <prgn>ls -a</prgn>

<p>
Lorsque vous tapez <prgn>ls</prgn> les fichiers commençant par un . ne
sont pas affichés. Traditionnellement, ces fichiers contiennent des
informations de configurations, de préférences et toutes sortes de
choses du même acabit. Ils vous sont cachés dans votre travail
quotitien. Des exemples simples de fichiers cachés sont
<prgn>~/.emacs, ~/.newsrc, ~/.bashrc, ~/.xsession</prgn> et
<prgn>~/.fvwmrc</prgn>. Ils sont respectivement utilisés par
<em>Emacs</em>, le lecteur de niouses, le shell <em>Bash</em>, le
système <em>X-Window</em> et le gestionnaire de fenêtres
<em>fvwm</em>. Il est conventionnel d'ajouter un <prgn>rc</prgn> final
aux fichiers cachés mais certains programmes ne le font pas. Il y a
aussi des répertoires cachés, comme <prgn>~/.gimp</prgn> ou
<prgn>~/.netscape</prgn> qui rassemblent les préférences pour <em>The
Gimp</em> et <em>Netscape</em>.

<p>
Parfois, un fichier créera automatiquement un fichier caché ; par
exemple, <em>Netscape</em> vous permet d'éditer dans une fenêtre
graphique vos préférences et de sauvegarder vos choix. D'autres fois,
vous devrez les créer vous-même à l'aide d'un éditeur de texte. C'est
la façon traditionnelle de faire mais vous avez à apprendre le format
particulier de chaque fichier, ce qui est un inconvénient au début
mais vous donne par la suite beaucoup de puissance.
</sect1>
</sect>

<sect> Processus

<p>
Nous avons déjà souligné le fait que GNU/Linux est un système
multi-tâches. Il peut traiter plusieurs choses simultanément. Chacune
de ces tâches est appelé <em>processus</em> (<em>process</em> en
anglais). La meilleure façon de comprendre ce qui précède est de taper
<prgn>top</prgn> après le prompteur du shell. Vous obtiendrez une
liste des processus triés suivant le temps que votre ordinateur met à
les traiter. Leur ordre change continuellement devant vos yeux. En
haut de l'écran, vous devez apercevoir quelques informations sur le
système: combien il y a d'utilisateurs connectés, combien il y a de
processus, combien de mémoire vous avez et combien vous en utilisez
réellement.

<p>
Dans la colonne d'extrème gauche, vous apercevrez les utilisateurs
propriétaires de chaque processus. À l'extrème droite, vous trouverez
la liste des commandes évoquées. Vous avez certainment remarqué que
<prgn>top</prgn> lui-même, lancé par vous, est presqu'en haut de la
liste (car à chaque fois que <prgn>top</prgn> vérifie l'usage du
microprocessur (CPU), il l'active lui-même et utilise le CPU pour
faire la vérification).

<p>
Remarquez que toutes les commandes se terminant pas « d » - comme
<prgn>kflushd</prgn> ou <prgn>inetd</prgn> - sont des
<em>daemons</em>.

<p>
Les <em>daemons</em><footnote><em>Daemons</em> en anglais se traduit
par démons mais j'ai préféré garder le terme anglo-saxon car ce n'est
pas un nom mais un acronyme.</footnote> signifient à l'origine
<em>Disk And Extensions MOnitor</em> (Surveillance des disques et des
extensions). Un daemon est un processus non interactif ce qui veut
dire qu'il est lancé par le système et que l'utilisateur n'a pas à
s'en occuper. Les daemons servent à fournir des services comme la
connexion Internet, l'impression ou le courrier électronique.

<p>
Maintenant, appuyez sur <prgn>u</prgn> et entrez votre nom
d'utilisateur. La commande <prgn>u</prgn> sert à afficher les seules
processus appartenant à un utilisateur; cela permet d'ignorer tous les
daemons et tous les processus appartenant à d'autres
utilisateurs. Vous devez voir <prgn>bash</prgn>, le nom de votre
shell. Vous aurez toujours le nom de votre shell.

<p>
La colonne numéro deux vous renvoie le PID pour <em>Process
IDentication</em> (identificateur de processus). On assigne à chaque
signal un unique PID. Vous pouvez utiliser les PID pour contrôler
individuellement les processus (on approndira le sujet
ultérieurement). Un truc utile est la commande <prgn>?</prgn> qui vous
renvoie une liste des commandes disponibles sous <prgn>top</prgn>.

<p>
Il se peut que vous vous posiez la question de la différence entre un
processus et un programme. En pratique, on utilise indifféremment l'un
pour l'autre. Techniquement parlant, un <em>programme</em> est le jeu
d'instruction écrit par un programmeur et gardé sur le disque. Le
<em>processus</em> est l'instantiation en mémoire de ce programme sous
Linux. Mais il n'est pas primordial de faire une réelle différence.

<p>
Beaucoup de vos interventions avec un ordinateur vont consister à
contrôler les processus. Vous allez devoir les faire partir, les
arrêter et les observer. Votre outil priviligié pour cela est le
shell.
</sect>

<sect> Le shell

<p>
Le <em>shell</em>, ou <em>interpréteur de commandes</em> vous permet
d'interagir avec votre ordinateur. Il est appelé <em>shell</em>
(coquillage) car il vous fournit un environnement de travail, comme
une sorte de petite maison électronique pour vos travaux informatiques
(pensez à l'abri de l'ermite).

<p>
La fonction la plus simple du shell est de lancer les autres
programmes. Vous tapez le nom du programme que vous voulez lancer,
avec à la suite les arguments que vous voulez et le shell demandera au
système de lancer le programme pour vous.

<p>
Bien-sûr, les systèmes graphiques avec fenêtres fournissent le même
type de services. Techniquement, Windows 95 fournit un shell graphique
et le système X-window fournit un autre type de shell graphique. Mais
le terme <em>shell</em> est communément employé en sous-entendant
<em>shell pour lignes de commandes</em>.

<p>
Cela va sans le dire mais les hackers travaillant sur un shell ne se
contentent pas de lancer simplement des commandes. Votre shell regorge
d'astuces cachées et de fonctionnalités puissantes si vous désirez
vous en servir.

<p>
Il y a de très nombreux shells différents disponibles. La plupart
d'entre eux sont basés soit sur le <em>Bourne Shell</em> soit sur le
<em>C shell</em>, deux des plus vieux shells. Le nom originel du
Bourne Shell est <prgn>sh</prgn> et celui du C shell,
<prgn>csh</prgn>. Les différentes variantes du Bourne Shell sont le
<em>Bourne Again Shell</em> du projet GNU (<prgn>bash</prgn>, le shell
par défaut de Debian), le <em>Korn Shell</em> (<prgn>ksh</prgn>) et le
<em>Z shell</em> (<prgn>zsh</prgn>). Il y a aussi <prgn>ash</prgn>,
une implémentation traiditionnelle du Bourne shell. La plus connue des
variantes du C shell est <prgn>tcsh</prgn> (le <prgn>t</prgn> est un
tribu payé aux systèmes d'exploitation <em>TENEX and TOPS-20</em> qui
ont inspiré quelques parties de <prgn>tcsh</prgn> en sus de
<prgn>csh</prgn>).

<p>
<prgn>bash</prgn> est certainement le choix le meilleur pour un nouvel
utilisateur. C'est le shell par défaut et il comprend des tas de
fonctionnalités que vous allez apprécier. Mais chaque shell possède
ses avantages. Si vous voulez expérimenter, installez les différents
paquets de shell et changez votre shell avec la commande
<prgn>chsh</prgn>. Tapez simplement <prgn>chsh</prgn>, fournissez
votre mot de passe et lorsque demandé, choisissez votre nouveau
shell. Lorsque vous vous reloguerez de nouveau, vous utiliserez le
nouveau shell.
</sect>

<sect> Gérer les processus avec <prgn>bash</prgn>

<p>
Debian est un système multi-tâches donc vous avez besoin d'un moyen de
faire plus d'une chose à la fois. Les environnements graphiques, comme
X, fournissent un élément naturel pour le faire: ils autorisent
plusieurs fenêtres simultanément. Naturellement, <prgn>bash</prgn>, et
tous les autres shells, fournissent des facilités similaires.

<p>
Récemment, vous avez utilisé <prgn>top</prgn> pour jeter un coup
d'oeil sur tous les processus de votre système. Votre shell vous
propose des façons aisées de suivre les commandes que vous avez
lancées à partir de ce shell. Chaque ligne de commande lance un
<em>job</em> (aussi appelé un <em>groupe de processus</em>) qui sera
suivi par le shell. Un job peut être simplement un processus ou bien
un ensemble de processus tubés (plus sur les tubes un peu plus tard).

<p>
Entrer une ligne de commande lance un job. Essayez de taper <prgn>man
cp</prgn> et la page de manuel de <prgn>cp</prgn> va apparaître à
l'écran. Le shell va tourner en arrière-plan et revenir en avant-plan
une fois la lecture de la page terminée (ou vous pouvez taper sur q
pour éviter d'avoir à dérouler toute la page pour sortir).

<p>
Mais admettons que vous désiriez faire quelque chose d'autre pendant
la lecture du manuel. Pas de problème. Appuyez sur <em>Ctrl-z</em>
pour suspendre la lecture du manuel (mis en arrière-plan du job
courant) et ainsi remettre en avant-plan le shell. Lorsque vous
suspendez un job, <prgn>bash</prgn> vous donne immédiatement quelques
informations à son sujet et ensuite il renvoit un prompteur. Vous
devriez apercevoir quelque chose comme cela à l'écran:

<p>
<example>
NAME  cp  - copy files SYNOPSIS cp [options] source
--More--
[1]+ Stopped man cp
$
</example>

<p>
Observez bien les deux dernières lignes. Les deux dernières comportent
l'information sur le job et vous avez le prompteur du shell.

<p>
<prgn>bash</prgn> assigne à chaque ligne de commande un <em>numéro de
job</em> donné par le shell. Cela vous permet de vous référer
facilement à un processus. Dans ce cas, <prgn>man cp</prgn> porte le
numéro 1, indiqué par <prgn>[1]</prgn>. Le signe <prgn>+</prgn> veut
dire que c'est le dernier job à avoir été mis en
arrière-plan. <prgn>bash</prgn> vous renvoie aussi l'état courant du
job - <prgn>Stopped</prgn> - ainsi que la ligne de commande.

<p>
Il y a de nombreuses choses à faire avec les jobs. Avec <prgn>man
cp</prgn> toujours suspendu, essayez la commande suivante:

<p>
<example>
man ls
</example>

<p>
Cela crée un nouveau job.

<p>
<example>
Ctrl-z
</example>

<p>
Cela le suspend; vous devriez voir les informations du job.

<p>
<example>
man mv
</example>

<p>
Lance un nouveau job.

<p>
<example>
Ctrl-z
</example>

<p>
Le suspend aussi.

<p>
<example>
jobs
</example>

<p>
Demande au <prgn>bash</prgn> d'afficher l'état de tous les jobs en
cours. Le résultats devraient ressembler à :

<p>
<example>
{$} jobs
[1] Stopped man cp
[2]- Stopped man ls
[3]+ Stopped man mv
{$}
</example>

<p>
Remarquez bien que les - et + qualifient respectivement
l'avant-dernier et le dernier job en arrière-plan.

<p>
<example>
fg
</example>

<p>
Cela place le dernier job en arrière-plan (<prgn>man mv</prgn>, celui
avec le +) de nouveau en avant-plan. Si vous pressez la barre
d'espace, la page de manuel va se dérouler.

<p>
<example>
Ctrl-z
</example>

<p>
Suspend à nouveau <prgn>man mv</prgn>.

<p>
<example>
fg %1
</example>

<p>
Vous pouvez vous référer à n'importe quel job en utilisant % suivi de
son numéro. Si vous utilisez <prgn>fg</prgn> sans lui spécifier de
job, c'est le dernier actif qui sera réveillé.

<p>
<example>
Ctrl-z
</example>

<p>
Suspend à nouveau <prgn>man cp</prgn>.

<p>
<example>
kill %1
</example>

<p>
Détruit le job numéro 1. <prgn>bash</prgn> fait un rapport
d'information du job qui devrait ressembler à:

<p>
<example>
$ kill %1
[1] - Terminated man cp
$
</example>

<p>
<prgn>bash</prgn> se contente de demander au job de se terminer et
parfois ce dernier ne veut pas. Dans ce cas, vous devez ajouter
l'option <prgn>-KILL</prgn><footnote> de nombreuses personnes
utilisent le signal -9 plutôt que le nom du signal. Dans tous les cas,
c'est techniquement moins portable que d'utiliser le nom du
signal</footnote> pour arrêter la demande de destruction et commencer
la destruction. Par exemple:

<p>
<example>
$ kill -KILL %1
[1]- Killed man mv
$
</example>

<p>
L'option <prgn>-KILL</prgn> force une destruction inconditionnelle du
job.

<p>
En des termes plus techniques, <prgn>kill</prgn> se contente d'envoyer
un signal. Par défaut, il envoie un signal de terminaison
(<prgn>TERM</prgn> ou <prgn>signal 15</prgn>) mais vous pouvez très
bien spécifier un signal et l'option <prgn>-KILL</prgn> (<prgn>signal
9</prgn>) est le signal qui force la terminaison. La commande
<prgn>kill</prgn> n'est pas forcément appropriée pour l'envoi de
signaux ; par exemple, envoyer le signal <prgn>TSTP</prgn>
(<prgn>terminal stop</prgn>) suspend le processus et permet de le
récupérer plus tard.

<p>
<example>
top
</example>

<p>
Cela nous renvoie à l'écran la sortie de <prgn>top</prgn>. Envoyez la
commande <prgn>u</prgn> dans <prgn>top</prgn> pour ne visualiser que
vos processus. Regardez dans la colonne de droite les commandes
<prgn>man ls</prgn> et <prgn>man mv</prgn>. <prgn>man cp</prgn> n'est
plus là puisque vous l'avez tuée.  <prgn>top</prgn> vous montre les
processus vous appartenant ; remarquez bien que le PID à gauche de
l'écran ne correspond pas au numéro de job.

<p>
Il se peut que vous ne voyez pas vos processus car trop bas pour
apparaître à l'écran. Si vous utilisez X (voir chapitre 11), vous
pouvez redimensionner votre <prgn>xterm</prgn> pour résoudre le
problème.

<p>
Même ces simples jobs sont en réalité des processus multiples,
incluant le processus <prgn>man</prgn> et le visualiseur
<prgn>more</prgn> qui vous permet de faire défiler les pages une par
une. Vous devez apercevoir les processus <prgn>more</prgn> dans
<prgn>top</prgn>.

<p>
Vous vous demandez peut-être comment nettoyer les deux jobs
restant. Vous pouvez soit les tuer (avec la commande
<prgn>kill</prgn>) ou bien les remettre en avant-plan (avec
<prgn>fg</prgn>) puis les quitter. Rappelez-vous que la commande
<prgn>jobs</prgn> vous renvoie la liste des jobs en cours et leur
état.

<p>
Une touche finale: la documentation de <prgn>bash</prgn> est plutôt
bonne mais il vaut mieux aller la chercher dans le système d'aide
<prgn>info</prgn> que dans les pages de manuel. Pour la lire, tapez
<prgn>info bash</prgn>. Voir la partie 16.2 pour les instructions
pour se servir de la commande <prgn>info</prgn>. <prgn>bash</prgn>
contient aussi une très bonne documentation en ligne accessible via la
commande <prgn>help</prgn>. <prgn>help</prgn> renvoie une liste de
sujets disponibles. On peut accéder directement à l'information en
tapant <prgn>help sujet en question</prgn>. Essayez <prgn>help
cd</prgn> par exemple. Cela vous fournira des détails sur les
arguments <prgn>-L</prgn> et <prgn>-P</prgn> reconnus par
<prgn>cd</prgn>.
</sect>

<sect> Quelques fonctionnalités de <prgn>bash</prgn>

<p>
Cette partie mentionne rapidement quelques fonctionnalités couramment
utilisées sous <prgn>bash</prgn>. Pour une discussion plus complète,
reportez-vous au chapitre 8.

<sect1> Le complètement par tabulation

<p>
Le shell <prgn>bash</prgn> est capable de deviner quel fichier ou
commande vous êtes en train de taper et les finir automatiquement pour
vous. Il suffit simplement de taper le début de la commande ou du
fichier et d'appuyer sur la touche de tabulation. Si <prgn>bash</prgn>
trouve un complètement unique, il finira le mot et ajoutera un espace
à la fin. S'il trouve de multiples complètements<footnote>On trouve
parfois <em>complétion</em> qui n'est qu'un barbarisme engendré à
partir du terme anglais <em>completion</em>.</footnote>, il propose
l'ensemble de ses choix possibles en émettant un signal sonore. Vous
pouvez alors entrer le nombre de lettres suffisantes pour le rendre
unique et appuyez sur la touche de tabulation à nouveau. S'il n'existe
pas de complètement, <prgn>bash</prgn> émet simplement un signal
sonore.
</sect1>
</sect>

<sect> Protéger votre identité

<p>
Les systèmes de type Unix sont multi-utilisateurs et vous avez donc
votre propre identité comme utilisateur sur le système. Tapez
<prgn>finger votrenomdutilisateur</prgn> pour voir les informations
qui sont publiquement disponibles. Pour changer le nom et le shell
affichés ici, vous pouvez utiliser la commande <prgn>chfn</prgn> et
<prgn>chsh</prgn>. Seul root peut vous changer votre login et votre
répertoire d'attache. Vous devez avoir vu <em>No plan</em>. Un
<em>plan</em> est une simple information que vous voulez rendre
publique. Pour créer un plan, vous placer toute l'information que vous
voulez montrer aux autres dans un fichier appelé
<prgn>.plan</prgn>. Pour le faire, vous devrez vous servir d'un
éditeur de texte (voir chapitre 10.2). Ensuite, utilisez à nouveau
<prgn>finger</prgn> pour observer le résultat. Les autres peuvent
utiliser finger sur vous pour voir votre <em>plan</em> ou vérifier si
vous avez reçu ou lu votre courrier électronique.

<p>
Remarquer bien que l'information de <prgn>finger</prgn> est disponible
à travers tout l'Internet par défaut. Si vous ne le voulez pas, lisez
la documentation de <prgn>inetd</prgn> et le fichier
<prgn>/etc/services</prgn>. Éventuellement, la page de manuel peut
décrire la mise en oeuvre mais il n'est pas évident que cela puisse
réellement vous aider.
</sect>

 </chapt>

-- 
      |\      _,,,---,,_       Patrice KARATCHENTZEFF  
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:pkarat@club-internet.fr 
     |,4-  ) )-,_. ,\ (  `'-'         p.karatchentzeff@free.fr
    '---''(_/--'  `-'\_)





Reply to: