Linux World : Partie #1

. . . . . . . . . . 23 Aout 2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SlayDave

Le document que vous lisez en ce moment est seulement le prmier d'une série que je vais écrire sur ce monde magique qui est Linux.
Dans cette première partie, je vais faire une introductions à Linux, et je vais vous présenter ses principaux commandes. Je voulais aussi ajouter une partie sur l'installation de ce système d'exploitation, mais j'ai trouvé que des documents traitent ce sujet d'une façon très detaillée pour chaque distribution et chaque version.
Pour faire ce tutorial, je me suis appuyé sur les documents suivants:

Si vous avez des remarques, des suggestions, des insultes, besoin d'aide, ou toute autre chose à me dire, n'hésitez pas à me mailler: dave.lombardo1@caramail.com.

Remarque: Ce document est testé avec Internet Explorer 6.0.2600.0000 sous Windows 98 (mais je pense que ça marchera aussi pour IE 4 et 5), Netscape Communicator 4.77 et Konqueror 2.11(avec KDE 2.11) sous Linux Mandrake 8.0. Pour ce qui est de Lynx ou Links je suis désolé que la mise en forme n'est pas assez bonne.


Table des matières


1- Introduction:

1.1- De quoi vous me parlez là?
Je vous parle de Linux (une réponse très bête non?). Linux est un système d'exploitation de type UNIX libre et gratuit (parfois vous payez, mais c'est juste pour couvrir les frais des CDs...), capable de tourner sur un simple PC (cependant, j'ai enetendu dire qu'il existe des versions pour MAC ...). La première version officielle de Linux date de 1991. Elle fut mise au point par une équipe de "hackers" (comprendre des vrais hackers et non pas des "crashers" !) autour de Linus Torvalds de l'Université de Helsinki, Finlande.

1.2- Pourquoi Linux?
Si tu en as marre de Windaube (F**k Kro$oft), alors tu dois installer Linux.
Si votre petit Windaube (F**k Kro$oft une deuxième fois) plante tous les 5 minutes, alors tu dois installer Linux.
Si tu es fan de la programmation et tu cherches des compilateurs très puissants et gratuit, alors tu dois installer Linux.
Si tu es un Lamer et tu cherche à te faire remarquer devant tes amis, alors tu dois installer Linux (mais je suis sûr que tu arriveras jamais ;-)).
Si tu es simplement curieux et tu veux connaître un autre monde, alors tu dois installer Linux.
Si tu cherches ton bonheur devant ton PC, alors IL VOUS FAUT LINUX.

Si tu ... (Arrêtez, j'en ai marre.).

Pourquoi?!

Cependant il existe quelques inconvénients (si on peut les appeler comme ça): 1.3- Où trouver...
1.3.1- Linux:
1.3.2- de l'aide:


2- Quelques concepts de base d'Unix:

2.1- Utilisateurs et groupes:
Remarque: J'ai bien dit UNIX, parce que cela est le cas de tous les UNIX y compris Linux.

Comme vous le savez Linux est un système d'exploitation multi-utilisateur, c'est pour ça qu'il est nécessaire de s'identifier au début de chaque session. Chaque utilisateur a deux paramètres importants:

Pour se connecter en tant qu'utilisateur, c'est facile il suffit de remplir les champs login et password (n'ayez pas peur si vous ne voyez rien à l'écran quand vous tapez votre mot de pass, normal non?). Et pour se déconnecter, tapez "logout", et si ça marche pas tapez "exit".

Remarque: Si vous êtes "root", il existe deux autres commandes intéressantes: "halt" pour arrêter le système et "reboot" pour le redémarrer.

Pour ajouter un nouvel utilisateur (en mode console), vous devez taper: "adduser user", et ça va créer un nouvel utilisateur du nom "user", ainsi qu'un répertoire "/home/user", dans lequel "user" aura ses fichiers. En fait, "adduser" est un script qui appelle "useradd" et crée en plus le home (le répértoire dejà mentionné là-haut) du nouvel utilisateur.

Astuce: Si votre commande "adduser" (ou "useradd") ne fonctionne plus, vérifiez s'il n'existe pas un fichier "/etc/pwd.lock", et détruisez le ("rm /etc/pwd.lock").

Pour changer le mot de passe d'un utilisateur: "passwd user" sous "root", ou "passwd" sous "user".
Pour retirer un utilisateur et tous ses documents : "userdel -r user" fera le travail.
Tapez "who" pour savoir qu'ils sont les utilisateurs connectés en ce moment, et "whoami" pour savoir sous quel nom d'utilisateur vous vous êtes connectés.

Vous entendez beaucoup parler de "root", en effet c'est un utilisateur spécial (vous le verrez plus tard).

A part les utilisateurs, sous Linux (et d'ailleurs tous les Unix) il existe ce qu'on appelle un groupe. Les groupes sont utiles dans le cadre de partage de fichiers entre différentes personnes. Chaque groupe peut contenir autant d'utilisateurs que vous le souhaitez, et il est très courant de voir une telle séparation dans les gros systèmes.
Par défaut Par défaut, la création d'un utilisateur crée aussi un groupe du même nom que l'utilisateur.
Pour créer un groupe: "groupadd nouveau_groupe" crée un groupe du nom nouveau_groupe.
Pour ajouter l'utilisateur "user" au groupe nouveau_groupe : "gpasswd -a bebert nouveau_groupe".
Et pour identifier les groupes auxquels appartient l'utilisateur "user" : "groups user".

Une autre chose à savoir c'est que le système ne connait pas les utilisateurs ou les groupes par leurs noms, mais par deux numéros, le premier est UID (User ID) pour les utilisateurs, et GID (Group ID) pour les groupes.

2.2- Les fichiers: (la majorité de cette partie est tirée du "Manuel de référence")
En tant que propriétaire d'un fichier, un utilisateur peut établir des droits sur ce fichier. Ces droits distinguent trois catégories d'utilisateurs: le propriétaire du fichier, tout utilisateur qui est membre du groupe propriétaire associé au fichier (appelé le groupe propriétaire) mais n'est pas le propriétaire lui-même, et les autres, catégorie qui regroupe tout utilisateur qui n'est ni le propriétaire ni membre du groupe propriétaire.

On distingue trois types de droits :

Toutes les combinaisons de ces droits sont possibles : vous pouvez par exemple autoriser la lecture du fichier à vous seul et l'interdire à tous les autres. Vous pouvez même faire l'inverse, même si ce n'est pas très logique à première vue... En tant que propriétaire du fichier, vous pouvez en changer le groupe propriétaire (si et seulement si vous êtes aussi membre du nouveau groupe), voire vous en déposséder (c'est-à-dire en changer le propriétaire). Bien sûr, si vous vous dépossédez du fichier, vous perdez tous vos droits dessus...

Prenons un exemple:

$ls -l
total 1
-rw-r-----   1 slaydave    prog      51230 Jul  16 14:11 langage_c
drwxr-xr--   2 user    prog      1024 Jul  8 14:11 programmation/
$
-----------------------------
pour "$" il s'agit de l'invite de la ligne de commande,
pour le "root" il est souvent marqué "#".
Ce qui est est en gras c'est ce que vous tapez.

Les dix premiers caractères désignent successivement le type du fichier et les droits qui lui sont associés; le premier caractère désigne le type du fichier : c'est un tiret (-) s'il s'agit d'un fichier ordinaire, (d) si le fichier est un répertoire. Il existe d'autres types de fichiers mais on est encore débutant pour les savoir, alors patience. Les neuf caractères qui suivent représentent les droits associés au fichier. On constatera ici la distinction faite entre les différents types d'utilisateurs pour un même fichier : les trois premiers caractères représentent les droits octroyés à l'utilisateur propriétaire, les trois suivants s'appliquent à tout utilisateur du groupe qui n'est pas le propriétaire, et les trois derniers aux autres; un tiret (-) signifie que le droit n'est pas octroyé.
Vient ensuite le nombre de liens du fichier (on verra pas ça une autre fois). Viennent ensuite le nom de l'utilisateur propriétaire du fichier et le nom du groupe propriétaire.
Enfin sont affichés la taille du fichier (en octets) ainsi que la date de sa dernière modification, et pour finir le nom du fichier ou répertoire lui-même.

Observons maintenant en détails les droits associés à l'accès de chacun de ces fichiers : il faut tout d'abord enlever le premier caractère, qui désigne le type ; donc pour le fichier "langage_c", les droits accordés sont : "rw-r-----". Voici comment les interpréter :

Pour le répertoire "programmation", les droits sont rwxr-xr--, et donc : Il existe une exception à ces règles : "root". "root" peut changer les attributs (droits, propriétaire, groupe propriétaire) de tous les fichiers, même s'il n'en est pas le propriétaire. Cela veut dire qu'il peut aussi s'en attribuer la propriété ! Il peut lire des fichiers sur lesquels il n'a pas le droit de lecture, traverser des répertoires auxquels il n'aurait normalement pas accès, et ainsi de suite. Et s'il lui manque un droit, il lui suffit juste de le rajouter..., le "root" est donc le super-utilisateur.

Pour conclure, il est utile de mentionner les différences entres les noms de fichiers dans le monde Unix et le monde Windows. Unix permet une flexibilité bien plus grande et a moins de limitations :

2.3- Les processus (introduction): (Même chose que pour la partie précédente)
On désigne par le terme de processus une instance de programme en cours d'exécution et son environnement. Chaque processus s'exécute avec les droits de l'utilisateur qui l'a lancé. En interne, le système identifie les processus de façon unique grâce à un numéro. Ce numéro est appelé le PID (Process ID). Avec ce PID, le système sait, entre autres choses, qui (quel utilisateur, donc) a lancé le processus. Il lui reste alors à vérifier si ce que le processus demande est « légal ». Si on en revient donc à l'exemple du fichier "langage_c" cité plus haut, un processus lancé par l'utilisateur "user" sera capable d'ouvrir ce fichier en lecture seule, mais pas en lecture/écriture, puisque les droits associés au fichier l'interdisent. Encore une fois, l'exception à la règle est "root"...

Cela a pour conséquence que Linux est virtuellement immunisé contre les virus : pour opérer, les virus doivent infecter des fichiers exécutables du système. Mais avec le seul statut d'utilisateur, il leur est impossible de modifier ces fichiers, ce qui réduit le risque d'autant. Ajoutons que les virus sont, en général, très rares dans le monde Unix : jusque là, il n'existe que trois virus connus pour Linux (Je sais pas s'il existe d'autres), et ils sont complètement inoffensifs lorsqu'ils sont lancés par un utilisateur normal. Un seul utilisateur peut vraiment endommager le système en activant ces virus, et, encore une fois, c'est... "root".
Paradoxalement, il existe bien des logiciels antivirus sous Linux pour... les fichiers DOS/Windows. En effet, de plus en plus de serveurs de fichiers Linux fournissent des machines Windows, avec le paquetage logiciel Samba (non, on va pas parler de ça).

Linux permet également un contrôle aisé des processus. Une façon de les contrôler sont les signaux. Avec les signaux, vous pouvez par exemple suspendre un processus ou le tuer. Envoyez simplement le signal correspondant au processus et c'est fait. Toutefois, vous serez limité à l'envoi de signaux à vos propres processus, pas aux processus lancés par un autre utilisateur. L'exception à la règle est "root". Oui, encore lui !(Dans un autre article, on va parler de ça en détail).

2.4- La ligne de commande (présentation):
La ligne de commande est le moyen le plus direct pour donner des ordres à la machine. Le shell est le programme qui se charge de lire et dexécuter les commandes que lutilisateur saisit. Classiquement, le shell est utilisé de manière interactive, cest à dire que lutilisateur dialogue avec le système par lintermédiaire du shell. Il saisit les commandes, et le shell les exécute et affiche les résultats. Le shell le plus couramment utilisé sous Linux est sans aucun doute bash. En tout cas, cest le shell par défaut que la plupart des distributions utilisent. Il est donc conseillé de connaître un petit peu ce que ce shell est capable de réaliser, et comment. Son nom provient de labréviation de langlais «Bourne Again SHell», ce qui signifie quil sagit effectivement dune nouvelle variante du shell sh.
Au temps des interfaces graphiques complexes et sophistiquées, il peut paraître archaïque de vouloir encore utiliser des lignes de commandes pour utiliser un ordinateur. Cest en partie vrai, mais il faut savoir que les shells Unix sont extrêmement puissants et que les interfaces graphiques ne permettent toujours pas, même à lheure actuelle, de réaliser toutes les tâches faisables avec un shell. Dautre part, il est souvent plus efficace de taper une simple commande dans un shell que de rechercher un outil graphique et de parcourir les divers menus, puis de choisir les options de la commande désirée avant de valider. Des ergonomes ont démontré, et des graphistes du monde entier le confirmeront, que la souris nest pas le périphérique dentrée le plus précis et le plus facile à utiliser pour manipuler les objets de lenvironnement utilisateur.
Quoi quil en soit, le shell est bien plus quun interpréteur de commande. Il sagit réellement dun environnement de programmation, permettant de définir des variables, des fonctions, des instructions complexes et des programmes complets, que lon appelle des scripts shell.
Mais ne comptez pas de savoir le tout à la fois, on verra ça dans un autre article.

Voici quelques commandes importantes à savoir:

Exercice:
Aller voir les pages man des commandes suivantes: "su", "pwd", "cd", "cat", "less", "ls" et "man".

A la fin de cette partie j'ai décidé de vous donner une liste des principaux racourcis de clavier pour le shell BASH. D'abord les touches fléchées : Bash maintient un historique des commandes que vous tapez, dans lequel vous pouvez vous balader avec les flèches haut et bas. Vous pouvez remonter jusqu'à un nombre de lignes définies dans la variable d'environnement HISTSIZE (on va revenir au sujet de ces variables plus tard). De plus, l'historique est persistant d'une session à l'autre, donc vous ne perdrez pas les commandes que vous avez tapées lors d'une session précédente.
Les flèches gauche et droite déplacent le curseur dans le sens indiqué. Vous pouvez ainsi éditer vos lignes de cette façon.
"Ctrl+a" et "Ctrl+e", vous amèneront respectivement au début et à la fin de la ligne courante. Les touches "Backspace" et "Suppr" (aussi appelé "Del") fonctionneront comme on s'y attend. Un équivalent de "Backspace" est "Ctrl+h" et un équivalent de "Suppr" est "Ctrl+d". "Ctrl+k" effacera toute la ligne depuis la position du curseur jusqu'à la fin de la ligne, et "Ctrl+w" effacera le mot qui précède la position du curseur.
Taper "Ctrl+d" sur une ligne vide vous fera fermer la session actuelle, ce qui est un vrai raccourci par rapport à la commande "exit". "Ctrl+c" interrompra la commande en cours d'exécution, sauf si vous étiez en train d'éditer une ligne, auquel cas ce sera l'édition en cours qui sera interrompue et vous serez ramené à l'invite. "Ctrl+l" nettoie l'écran.
Il existe beaucoup d'autres racourcis, mais ce sont les essentiels.


3- Introduction à la ligne de commande:

3.1- Manipulation de fichiers:
La manipulation de fichiers signifie ici "copier", "déplacer" et "effacer" des fichiers. Le changement de leurs attributs (propriétaire, permissions associées) sera examiné par la suite.

3.2- Manipulation des attributs de fichiers:
Les commandes présentée ici sont utilisées pour changer le propriétaire ou groupe propriétaire d'un fichier ou ses droits d'accès.

3.3- Redirections et tubes: (Tiré du "Manuel de référence")
3.3.1- Redirections:
Pour comprendre le principe des redirections et des tubes, ils nous faudra introduire ici une nouvelles notion qui concerne les processus. Chaque processus sous Unix (y compris les applications graphiques) ouvre un minimum de trois descripteurs de fichiers : l'entrée standard, la sortie standard et le canal d'erreur standard. Leurs numéros respectifs sont 0, 1 et 2. En général, ces trois descripteurs sont associés au Terminal depuis lequel le processus a été lancé, l'entrée standard étant lue depuis le clavier. Le but des redirections et des tubes est de rediriger ces descripteurs.

Dans cette section on va parler des redirections.

Supposons, par exemple, que vous vouliez connaître la liste des fichiers se terminant par ".png" dans le répertoire "images", et que cette liste soit très longue : il serait donc pertinent de la stocker dans un fichier pour la consulter à loisir ensuite. Vous pouvez alors taper ceci :
$ ls images/*.png 1>liste_fichiers
Ce qui signifie que la sortie standard de cette commande (1) est redirigée (>) vers le fichier qui a pour nom liste_fichiers. Le signe > est l'opérateur de redirection de sortie. Dans le cas où le fichier de redirection n'existe pas, il est alors créé. Par contre, s'il existait précédemment, son ancien contenu est écrasé. Cependant, par défaut, le descripteur redirigé par cet opérateur est la sortie standard, il n'est donc pas nécessaire de le spécifier sur la ligne de commande. Vous pouvez donc écrire plus simplement : $ ls images/*.png > liste_fichiers
et le résultat sera exactement le même. Vous pouvez ensuite consulter le fichier à l'aide d'un visualisateur de fichiers textes tel que "less".

Supposons maintenant que vous vouliez connaître le nombre exact de ces fichiers. Au lieu de compter manuellement, vous pouvez utiliser le bien nommé : "wc" (Word Count, comptage des mots) avec l'option -l, qui écrit sur la sortie standard le nombre de lignes du fichier. Pour obtenir le résultat désiré, une solution possible serait la suivante :
wc -l 0 <liste_fichiers
Le signe < est l'opérateur de redirection d'entrée. Le descripteur redirigé par défaut est également celui de l'entrée standard, donc 0. La ligne s'écrit alors simplement :
wc -l <liste_fichiers

Supposons maintenant que vous vouliez retirer de cette liste toutes les «extensions» des fichiers puis sauvegarder le résultat dans un autre fichier. L'outil dont vous aurez besoin sera : "sed", pour Stream EDitor (éditeur de flux). Il suffira de rediriger l'entrée standard de sed vers le fichier liste_fichiers et de rediriger sa sortie vers le fichier résultat, par exemple la_liste : sed -e 's/\.png$//g' <liste_fichiers > la_liste
Il vous sera également possible de consulter à loisir cette nouvelle liste avec un visualisateur.

Il pourrait aussi s'avérer utile de rediriger l'erreur standard. Par exemple, vous voulez savoir quels répertoires dans /shared ne vous sont pas accessibles : une solution est de lister récursivement ce répertoire et de rediriger les erreurs vers un fichier, tout en n'affichant pas le canal de sortie standard :
ls -R /shared > /dev/null 2>erreurs
Ce qui signifie que la sortie standard sera redirigée (>) vers /dev/null, un fichier spécial dans lequel tout ce qu'on écrit est perdu (et aura comme effet secondaire que la sortie standard ne sera pas affichée) et que le canal d'erreur standard (2) est redirigé (>) vers le fichier erreurs.

3.3.2- Tubes:
Les tubes (pipes en anglais) sont en quelque sorte une combinaison des redirections d'entrée et de sortie. Leur principe mime en effet celui d'un tube: un processus envoie des données dans le tube par un bout et un autre processus lit les données par l'autre bout. L'opérateur tube est "|". Reprenons l'exemple de la liste des fichiers ".png" ci-dessus. Supposons que vous vouliez seulement connaître le nombre de fichiers en question sans avoir à stocker la liste dans un fichier temporaire.
utilisez alors la commande suivante:
ls images/*.png | wc -l
ce qui signifie que la sortie standard de la commande ls (donc la liste des fichiers) est redirigée vers l'entrée standard de la commande wc. Vous obtenez donc le résultat désiré.

Vous pouvez de même construire directement la liste des fichiers «sans les extensions» avec la commande suivante:
ls images/*.png | sed -e 's/\.png//g' >la_liste

ou, si vous voulez simplement consulter la liste sans la stocker dans un fichier:
ls images/*.png | sed -e 's/\.png//g' | less

Les tubes et les redirections ne sont pas limités au seul texte lisible par les humains. Ainsi en est-il de la commande suivante, lancée à partir d'un xterm "console sous X-Window):
xwd -root | convert - ~/mon_bureau.png
ce qui effectuera une capture d'écran de votre bureau dans le fichier intitulé mon_bureau.png dans votre répertoire personnel.

3.4- Autres: (encore tiré du "Manuel de référence")
3.4.1- Motifs d'englobement du shell:
Il est probable que vous utilisiez déjà sans le savoir des caractères d'englobement. Quand vous enregistrez un fichier dans une application sous Windows, quand vous recherchez un fichier, vous utilisez "*" pour désigner une suite de caractères quelconque. Par exemple, "*.txt" désigne l'ensemble des fichiers dont le nom se termine par ".txt". Je l'ai également beaucoup utilisé dans les sections précédentes, mais l'englobement va beaucoup plus loin que le seul "*".

Quand vous tapez une commande comme "ls *.txt", puis Entrée, la tâche de trouver quels fichiers correspondent au motif "*.txt" n'est pas du ressort de ls, mais doit passer par le shell lui-même. Cela requiert donc une petite explication sur la façon dont le shell interprète une ligne de commande. Lorsque vous tapez :

$ ls *.txt
readme.txt recettes.txt

la ligne de commande est tout d'abord séparée en mots ("ls" et "*.txt" en l'occurrence). Quand le shell voit le "*" dans un des mots, il interprète le mot comme étant un motif englobant et le remplace dans la ligne de commande par les noms de tous les fichiers correspondant au motif. La ligne qui se trouve juste avant que ne s'enclenche l'exécution par le shell est donc devenue "ls readme.txt recettes.txt", ce qui donnera le résultat recherché. Le shell réagit aussi à la vue d'autres caractères :

Voici quelques exemples: Attention !: Quoique que cela soit vrai sous Linux, il est possible que cela ne fonctionne pas sur les systèmes d'opération de la famille Unix.

3.4.2- Le complètement (completion) dans les lignes de commande:
Le complètement est une fonctionnalité des plus pratiques et tous les shells modernes (dont bash) l'incluent désormais. Son but est d'aider l'utilisateur à en faire le moins possible ! Le mieux pour illustrer ce qu'est le complètement est un exemple.

Supposons que vous ayez dans votre répertoire personnel un fichier "fichier_au_nom_très_long_impossible_à_taper", et que vous vouliez le consulter. Mais, vous avez également dans ce même répertoire un autre fichier appelé fichier_texte. Que faire? Vous vous trouvez dans votre répertoire personnel et vous tapez alors la séquence suivante:
$ less fi<TAB>
(c'est-à-dire, tapez less fi suivi d'une pression sur la touche TAB). Le shell aura alors étendu la ligne de commande pour vous :
$ less fichier_
et aura également marqué la liste des choix possibles (dans sa configuration par défaut, qui peut être personnalisée). Tapez alors la séquence de touches suivante :
less fichier_a<TAB>
et le shell aura étendu la ligne de commande pour obtenir le résultat que vous souhaitiez:
less fichier_au_nom_très_long_impossible_à_taper
Il ne vous reste plus alors qu'à taper sur la touche Entrée pour valider et consulter le fichier.

Il existe bien d'autres méthodes de completion, mais celle-là est suffisante, alors à vous de chercher si vous êtes curieux.

3.4.3- Lancement et manipulation de processus en arrière-plan:
Vous aurez remarqué que quand vous lancez une commande à partir d'un Terminal, vous devez normalement attendre que la commande soit terminée pour que le shell vous rende le contrôle: c'est que vous avez lancé la commande au premier plan. Il y a des situations, cependant, où cela n'est pas souhaitable.

Supposons, par exemple, que vous ayez entrepris de copier récursivement un gros répertoire vers un autre. Vous décidez également d'ignorer les erreurs, donc vous redirigez le canal d'erreur vers /dev/null (déjà vu) :
cp -R images/ /shared/ 2>/dev/null
Une telle commande peut prendre plusieurs minutes avant d'être exécutée. Vous disposez alors de deux solutions : la première, brutale, est d'interrompre (de «tuer») (on verra ça après) la commande pour la relancer plus tard, quand vous aurez le temps. Pour ce faire, tapez Ctrl-c (la touche Control plus la touche c): cela terminera le processus et vous retournerez alors à l'invite. Mais attendez, ne faites pas ça ! Continuez à lire.

Supposons que vous vouliez exécuter une commande pendant que vous faites quelque chose d'autre. La solution est de placer le processus en arrière-plan. Pour ce faire, tapez d'abord Ctrl-z pour suspendre le processus:

$cp -R images/ /shared/ 2>/dev/null
# Tapez Ctrl-z
[1]+   Stopped           cp -R images/ /shared/ 2>/dev/null

et vous revoilà devant l'invite. Le processus est alors suspendu, dans l'attente d'être relancé (comme l'indique le mot-clé Stopped, arrêté). Vous allez le relancer mais en le maintenant en arrière-plan. Tapez bg (pour BackGround, arrière-plan), provoquera exactement l'effet escompté:

$bg
[1]+ cp -R images/ /shared/ 2>/dev/null &
$

Le processus aura alors repris son exécution en tâche de fond, ce qu'indique le signe "&" (esperluette) à la fin de la ligne. Vous vous retrouvez alors en face de l'invite et pouvez continuer à travailler. Un processus qui tourne en tâche de fond, ou arrière-plan, est appelé un job.

Vous pouvez bien sûr lancer directement des processus en tâche de fond, justement en ajoutant une & à la fin de la commande. Ainsi, vous pouvez lancer la copie du répertoire en arrière-plan en écrivant:

$cp -R images/ /shared/ 22>/dev/null &

Si vous le souhaitez, vous pouvez également remettre ce processus au premier plan et attendre qu'il se termine en tapant fg (pour ForeGround, premier plan). Répétez alors la séquence Ctrl-z, bg pour le remettre à l'arrière-plan.
Vous pouvez lancer plusieurs jobs de cette façon : chacune de ces commandes recevra alors un numéro de job. La commande jobs du shell indique la liste de tous les jobs associés au shell courant. Le job précédé d'un signe + désigne le dernier processus mis en tâche de fond. Pour remettre au premier plan un job en particulier, vous pourrez alors taper fg désigne le numéro de job, par exemple fg 5.
Notez que vous pouvez également suspendre ou lancer de cette façon des applications plein écran (si elles sont correctement programmées), telles que less ou un éditeur de texte comme VI, et les remettre au premier plan quand vous le voulez.


4- Divers:

4.1- L'édition de texte: (La majorité de cette section est tirée du "Guide dinstallation et de configuration de Linux"
On trouve sous Linux des éditeurs de texte très puissants, "vi" et "emacs". Ils paraîtrons toujours complexe à la première vue, mais avec un peu de pratique c'est autre chose. Dans cette partie on va parler de quelques (je dis bien quelques) commandes de base pour l'utilisation de "vi" (prononcer vi-aîe), tout de même pour trouver de l'aide sur l'utilisation de "emacs" ou même "vi", il existe plusieurs Howto, sois vous les avez avec votre distribution sois vous les trouvez sur internet (vous pouvez me contacter si vous les trouvez pas).

Pour éditer un fichier avec vi, il suffit de passer le nom de ce fichier en ligne de commande:
vi fichier
Il est possible de passer plusieurs fichiers dans la ligne de commande, et vi les éditera les uns après les autres. Cependant, il faut savoir que vi ne permet de travailler que sur deux fichiers à la fois, et quil nest pas facile de passer de lun à lautre. Par conséquent, il est conseillé de néditer quun seul fichier à la fois.

vi est un éditeur qui fonctionne avec plusieurs modes de fonctionnement : le mode dédition, dans lequel le texte peut être modifié, le mode de commande, dans lequel des commandes particulières peuvent être données, et le mode de visualisation, dans lequel le fichier ne peut être que visualisé. Par défaut, vi est en mode de visualisation, et il faut utiliser une commande dédition pour passer en mode dédition. Quand on est en mode dédition, on peut revenir au mode de visualisation en appuyant sur la touche Echap (ou Esc, selon votre clavier). Cette touche a aussi une signification dans le mode de commande : elle annule la saisie de la commande en cours. Par conséquent, lorsquon est perdu et que lon ne sait plus dans quel mode on se trouve (ce qui arrive fatalement à un moment donné), il suffit dappuyer sur cette touche. On sait alors quon se trouve en mode de visualisation.

Le déplacement du curseur en mode de visualisation se fait avec les touches du curseur. Cependant, si votre clavier nest pas bien configuré, ces touches peuvent ne pas fonctionner. Cest pour cette raison que vi fournit un jeu de touches alternatif:

Le curseur est bien entendu déplacé automatiquement lors de la saisie du texte en mode dédition. Le passage en mode dédition peut se faire avec lune des commandes suivantes: La création dune nouvelle ligne peut donc être faite avec les commandes o et O, mais il est possible de couper une ligne en deux, ou de passer à la ligne simplement en tapant sur la touche Entrée en mode dédition. Inversement, la commande J permet de supprimer un saut de ligne en fin de ligne et de placer ainsi le texte de la ligne suivante à la suite du texte de la ligne courante. La suppression dun caractère se fait avec la touche Suppr (ou Del, selon le clavier) ou la touche de retour arrière (dite touche Backspace). Cependant, encore une fois, vi fournit un jeu de touches alternatif permettant de travailler avec un clavier mal configuré: Le texte qui a été supprimé est placé dans ce que lon appelle un buffer. Le contenu du buffer peut être inséré à nimporte quel endroit du fichier grâce à la commande p. Ainsi, il est possible de faire un couper/coller en effaçant la ligne désirée et en appuyant sur la touche p à lemplacement destination.
La commande u permet dannuler la dernière opération effectuée, et la commande U permet de la ré-exécuter.
La commande yy permet de copier la ligne courante dans le buffer. Cette commande est donc utilisée pour effectuer des copier/coller, en combinaison avec la commande p.

Les commandes de vi peuvent être répétées un certain nombre de fois, en tapant un nombre avant de les taper. Ainsi, pour supprimer 3 lignes, il suffira de taper la commande suivante:
3dd
Dans ce cas, ces trois lignes sont également placées dans le buffer. La même technique peut être utilisée pour copier/coller plusieurs lignes en une seule opération.

Enfin, vi accepte un certain nombre de commandes générales lorsquil est en mode de commande. Ce mode est activé dès que lon appuie sur la touche deux points (:) dans le mode de visualisation. Les commandes générales les plus utiles sont décrites ci-dessous:

Comme vous lavez constaté, vi est réellement une horreur à utiliser. Malgré tout, il permet de faire tout ce dont on a besoin pour éditer un fichier. Il dispose même de puissantes fonctionnalités que même les traitements de texte évolués ne sont pas capables de faire. Elles ne seront cependant pas décrites ici, car ceci dépasserait le cadre de ce document.

4.2- Quelques utilitaires en ligne de commande:
Dans cette section, on va parler d'un petit nombre d'outils en ligne de commande.

Il existe bien d'autres utilitaires (beaucoup plus nombreux que vous imaginez), que vous devez chercher par vous même dans les pages de manuel. Voici quelques commandes à chercher comme exercice:
crontab, at, bzip2, sort, convert, sed, zip, ....


5- Conclusion:
J'éspère que vous avez maintenant une base sur Linux (sinon vous pouvez me contacter). Vous avez sans doute remarqué que j'ai utilisé trop de copier/coller, c'est parce que je pense que ces parties copiées sont plus meilleur que ce que j'aurai pu écrire (et en plus pourquoi se fatiguer pour quelque chose que les autres ont déjà faite), aussi le temps (1 jour et demi) ne permet pas d'écrire un tel document.
Enfin, une chose à ne pas oublier, la pratique et l'expérimentation sont très important.
Dans la prochaine partie, on parlera plus sur les processus, les variables d'environnement et aussi beaucoup d'autres sujets.


Greetz: Meriyem, Storm, Slay-Tariq, Stoorm, Marcel, Darkshado, Cyanure, et les autres amis, ainsi que tous les membres de l'Underground (surtout le marocain et le français mais aussi les autres), moi pour avoir écrire ce texte ;-), et toi qui lit ce tutorial... Enfin merci pour les albums "South Of Heaven" de Slayer, "Damned In Black" Immortal, "Casket Garden" de Dismember et "Formulas Fatal To The Flech" de Morbid Angel, qui m'ont soutenu durant l'écriture de ce document.
Et un grand F***k: à tous les LaMeRs, à Kr$oft (Billou aussi), à Marok Télécon (pour ses facteurs) mais aussi les autres *** télécon (elles sont toutes les mêmes), à mon voisin Sharoon, et son ami Jorje Buch (je vois un petit sourire là)...