Copyright © 2009 Joey Prestia
Copyright © 2009 Gérard Baylard
Copyright © 2009 Joëlle Cornavin
Article paru dans le n°160 de la Gazette Linux de mars 2009.
Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.
Table des matières
On prétend souvent que la vraie puissance de Linux
réside dans la ligne de commande — et c'est vrai. Malheureusement, beaucoup de nouveaux utilisateurs de Linux
commencent par s'en servir comme système d'exploitation pour les ordinateurs de bureau et sont frustrés quand ils découvrent la fréquente nécessité de recourir à la ligne de commande — un environnement peu familier et ipso facto inconfortable. Ce cas se rencontre généralement quand ils doivent effectuer une installation à partir d'une archive tar (code source à compiler dans un fichier portant l'extension tar.gz) et constatent qu'il faut saisir des commandes ou se déplacer dans un répertoire particulier. Pour pimenter le tout, la barre oblique, séparateur de répertoires (ou slash, /
est une difficulté supplémentaire s'ils sont habitués à DOS
.
Ou peut-être ont-ils besoin d'obtenir le fonctionnement correct de la lecture d'une vidéo — opération pouvant encore tout à fait se transformer en véritable gageure sous Linux
. Tout cela peut s'avérer bien difficile pour les nouveaux utilisateurs à cause des nombreuses différences entre les systèmes d'exploitation. Mon but ici est de tenter de faciliter la transition en expliquant quelques fondamentaux susceptibles d'apporter de l'aide, soit pour essayer d'apprendre Linux
dans les règles, soit simplement pour commencer en tant qu'utilisateur d'ordinateur de bureau essayant de rompre avec Microsoft.
En fait, une fois qu'on se sera familiarisé avec quelques concepts clés, Linux
deviendra beaucoup plus facile. Entre autres, la structure des répertoires : par exemple, il n'existe plus de lecteur C:\
. Au lieu de cela, pour Linux
, la racine du système de fichiers se situe à « / », l'équivalent de C:\
sous Windows
. Peu importe le nombre de lecteurs présents dans un système Linux
, il n'y a qu'une arborescence de système de fichiers unique — l'ajout de lecteurs accroît simplement l'espace disponible. Linux
n'utilise pas le concept d'une arborescence de répertoires propre à chaque lecteur comme le fait Windows
.
Apprendre la structure de cette arborescence de répertoires est l'un des plus gros obstacles pour le nouvel utilisateur. Par exemple, la partie du système contenant vos fichiers personnels est appelée « dossier personnel » : son nom est identique à votre nom d'utilisateur et il est placé dans répertoire /home
. À la fin de cet article, se trouve un lien vers un excellent petit tutoriel dont l'examen peut prendre une heure ou deux, mais il ne fait aucun doute qu'il vous initiera à Linux
.
La plupart des commandes de Linux
sont une forme quelque peu abrégée de ce que fait la commande : par exemple, la commande ls signifie list (lister), cd correspond aux initiales de la commande change directory (changer de répertoire). En apprenant juste quelques commandes élémentaires, vous serez en mesure de vous déplacer efficacement dans votre système et d'effectuer de nombreuses tâches, mais soyez patient — il faut du temps. Linux
comporte un peu plus de 3 000 commandes.
[En réalité, cette affirmation est à la fois exacte et inexacte. Sous | ||
-- Ben] |
Toutes ont des analogies dans leur syntaxe, et quelques concepts de base leur sont communs. Peut-être la commande man est-elle la plus importante dont il faille se souvenir. À chaque fois que vous devez utiliser une commande assez mal connue, saisissez simplement man
, ce qui affichera la page de manuel de cette commande. Vous y trouverez les informations dont vous pourriez avoir besoin avant de l'exécuter.
commande
La syntaxe d'une commande fait référence à la grammaire de la séquence de caractères à saisir sur la ligne de commande. Pour vérifier la syntaxe d'une commande spécifique, un rapide coup d'œil à la page de manuel appropriée clarifiera les choses. Cette information se trouve sous l'intitulé « SYNOPSIS ». Pour la plupart des commandes, la syntaxe est « commande options argument ».
Le nom d'un programme comme ls, cat ou grep.
Une lettre ou un mot précédé d'un tiret pour les « options courtes » ou deux tirets pour la « forme longue » d'une option. -a
est une option courte et --all
est une option longue. Les deux ont la même signification.
Un argument peut être un nom de fichier, un répertoire, la spécification d'un périphérique comme /dev/cdrom
. Il est habituellement lié à l'option (par exemple : « --file
doc.txt
») et désigne, dans un certain sens, l'objet de la commande.
Nombre de personnes ont du mal à décider où placer une espace dans la ligne de commande. La meilleure ligne directrice consiste à toujours mettre des espaces après chaque commande et entre toutes les options précédées d'un tiret. Les arguments peuvent ou non nécessiter des espaces de début. Encore une fois, la page de man est souvent le meilleur guide.
Le premier signe visible quand on travaille dans l'interpréteur de commandes est l'invite. Son apparence vous indique normalement quel type d'utilisateur vous êtes, votre nom d'hôte dans le système hôte et l'emplacement où vous vous trouvez dans ce système.
[Ce n'est pas forcément vrai sur de nombreux autres systèmes | ||
-- Ben] |
En observant l'exemple ci-après, on peut voir que le nom d'utilisateur est « tom
», suivi du symbole « @
» séparant le nom d'utilisateur du nom d'hôte du système. Si vous n'avez jamais donné de nom à votre système, on peut trouver « localhost
» à cet endroit. Apparaît ensuite le caractère « ~
» indiquant que vous êtes dans le dossier personnel de l'utilisateur. Pour terminer, on a le caractère « $
» ; il indique, de manière générale, le niveau de droits d'accès que nous avons en tant qu'utilisateur. Ce paramètre varie selon les différents interpréteurs ; par exemple, les interpréteurs du langage C (csh, tcsh) utilisent « %
» pour un utilisateur normal, alors que l'interpréteur Bourne et ses dérivés (sh, ksh, bash, zsh et beaucoup d'autres) emploient habituellement « $
». L'utilisateur root (le superutilisateur du système) obtient une invite spéciale, « #
», ce qui permet à l'utilisateur de savoir qu'il doit être très, très prudent et précis dans les commandes qu'il saisit, car l'utilisateur root peut facilement détruire ou endommager le système.
[tom@station1 ~]$
[tom@station1 ~]#
En saisissant la commande echo $SHELL
, Tom découvre qu'il utilise Bash (alias, le Bourne Again Shell). Dans cet exemple, la commande echo affiche la valeur de la variable $SHELL
sur l'écran. L'interpréteur Bash est normalement l'interpréteur par défaut sur la plupart des systèmes Linux
modernes.
[tom@station1 ~]$ echo $SHELL /bin/bash
Si le répertoire de travail actuel n'est pas indiqué par l'invite, la première commande importante à apprendre est pwd, une abréviation de « print working directory » (afficher le répertoire de travail). Cette commande indique le chemin complet comme on peut le voir ci-après.
[tom@station1 ~]$ pwd /home/tom
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. Le shell est un interpréteur de commandes qui lit certaines variables d'environnement (on peut les voir en saisissant « env
» sur la ligne de commande) lors de l'ouverture d'un interpréteur de commandes. Quand vous saisissez une commande, l'interpréteur recherche les répertoires listés dans la variable PATH
pour trouver le programme que vous avez demandé d'exécuter. Si ce n'est ni du code incorporé dans l'interpréteur, ni un alias de commande, ni une fonction définie, ni un programme dans la variable PATH
indiquée, l'interpréteur de commande retourne l'erreur command not found
(commande introuvable).
[tom@station1 ~]$ print help me bash: print: command not found
Il existe de nombreuses commandes — peut-être même trop. Pour savoir combien il y en a à votre disposition, appuyez simplement deux fois de suite sur la touche Tab dans un terminal : un nombre s'affiche et un message vous demande si vous voulez vraiment les voir toutes. Ne vous inquiétez pas : vous n'aurez jamais besoin de connaître la plupart d'entre elles (beaucoup sont exécutées par d'autres commandes ou par l'intermédiaire de menus d'interface graphique). Personne ne peut se souvenir de toutes ces commandes — ce ne serait d'ailleurs d'aucun intérêt — et en connaître simplement un petit nombre vous aidera grandement sur tout système Linux
.
Les commandes sont sensibles à la casse et sont normalement écrites en minuscules. Une autre caractéristique importante à savoir est que beaucoup de commandes (par exemple, de copie, de déplacement, de liaison avec un périphérique, etc.) fonctionnent selon le mode « objet_origine vers objet_destination » :
cp/mon/fichier/source
/fichier/ou/répertoire/cible/
mv/depuis/ici
/vers/là
mount/dev/
mon_périphérique
mon_périphérique/à/monter/dans
Commutateurs et options servent à modifier l'action de la commande. Ils sont d'ordinaire immédiatement précédés d'un tiret simple ou double, prennent la forme soit de lettres, soit de mots entiers. Certaines commandes exigent des options, d'autres non. Voici quelques exemples :
Commande simple :
[tom@station1 ~]$
Exemple d'option courte :
[tom@station1 ~]$ ls -a
Options courtes multiples :
[tom@station1 ~]$ ls -a -h -i
Les options courtes multiples peuvent être groupées :
[tom@station1 ~]$ ls -ahi
Exemple d'option longue :
[tom@station1 ~]$ ls --all
Options longues multiples :
[tom@station1 ~]$ ls --all --human-readable --inode
Normalement, les options courtes sont regroupées s'il faut en indiquer plus d'une. En outre, quelques options courtes ont des options longues équivalentes qui effectuent la même action.
Un argument est habituellement un objet sur lequel la commande agit. Qu'une commande prenne ou non un argument ne dépend que de celle-ci : par exemple, ls peut prendre un argument, mais si aucun n'est fourni, la commande suppose que le répertoire de travail actuel est l'argument et affiche la liste de ce répertoire. Un exemple de commande ne prenant pas d'argument est true, qui n'accepte que des options. Là encore, les arguments varient selon la commande et un grand nombre d'entre elles ont un argument par défaut.
Lorsqu'on utilise la ligne de commande, il est pertinent de prendre l'habitude de vous servir du système de pages de manuel intégré de Linux
, également dénommé « pages de man ». À première vue, elles peuvent paraître déconcertantes et très sibyllines. Soyez assuré, pourtant — elles sont très utiles et nécessaires. En les utilisant, vous accélérerez considérablement votre apprentissage de Linux
. Pour voir les pages de man d'une commande, saisissez simplement « man
» et un écran contenant des informations s'affiche. Pour parcourir une page de man, appuyez sur les touches fléchées ainsi que les touches Précédent et Suivant pour la faire défiler, et sur la touche « q » pour quitter. Il existe un certain nombre d'autres touches de navigation pour effectuer une recherche, aller au début ou au bas de la page, etc. Tout dépend du programme de mise en page utilisé (en règle générale « more » ou « less », ce dernier étant le plus courant). Vous pourrez en savoir plus à ce propos en appuyant sur la touche h (c'est-à-dire help, aide) tout en parcourant la page de man.
command
Lorsqu'on observe une page de man, on remarque plusieurs en-têtes de sections :
NOM :
Le nom de la commande et souvent des commandes similaires pouvant être utiles.
SYNOPSIS :
Vous trouverez dans cette section la syntaxe détaillée pour lancer la commande de manière correcte. Vous devrez peut-être examiner la section OPTIONS ci-dessous pour obtenir des précisions. Beaucoup de commandes exigent de fournir des options pour pouvoir fonctionner de façon tout à fait satisfaisante.
DESCRIPTION :
Généralement un résumé de la description technique détaillée de ce que fait la commande.
OPTIONS :
Sous cet en-tête de section, se trouve une liste des options longues et courtes que la commande accepte. Il est pratiquement toujours nécessaire d'utiliser telle ou telle option avec une commande, c'est pourquoi cette section est de première importance et peut être assez longue. Comme la plupart des commandes donnent une signification spécifique à leurs options, sachez que toute option quelle qu'elle soit, employée avec une commande, peut avoir un tout autre sens lorsqu'elle est utilisée avec une autre commande.
EXEMPLES :
Pour les commandes peu courantes, je regarde pratiquement toujours cette section pour ne rien abîmer. Cette section, si elle existe, peut donner un meilleur éclairage à la syntaxe de la commande recherchée.
Selon les commandes, il se peut qu'il y ait plus de catégories pour certaines commandes et moins pour d'autres.
L'apprentissage de Linux
peut être un processus de longue haleine, mais vous le trouverez indubitablement plaisant et gratifiant au fur et à mesure que vous découvrirez la puissance impressionnante qu'il offre.
Le système Linux
a été conçu à l'origine pour l'utilisateur de la ligne de commande, et si vous savez comment trouver l'aide dont vous avez besoin, vous aurez accès à encore beaucoup plus de puissance que l'utilisateur moyen ne pourrait même imaginer. Une autre source d'information utile, si elle est installée sur votre machine, est la commande info, le système de documentation Textinfo, qui contient la documentation officielle du projet GNU. Quelques systèmes disposent à la fois des pages de man et info. Il est judicieux de tester ces deux applications pour voir si l'une offre plus d'informations à votre convenance. En règle générale, les pages info seraient plus faciles à comprendre que les pages de man, même si dans certains cas les informations sont identiques. Pour utiliser le système info, saisissez info commande
ou seulement info pour mieux le connaître.
Une autre fonctionnalité utile de la ligne de commande Linux
est la saisie semi-automatique des commandes à l'aide de la touche Tab (tab command completion) et la saisie semi-automatique de chemin à l'aide de la touche Tab (path completion). Si vous n'êtes pas sûr de l'orthographe complète correcte d'une commande ou un nom de fichier, vous pouvez saisir seulement deux ou trois lettres de début de cette commande et appuyer ensuite sur la touche Tab pour voir ce que l'interpréteur Bash propose comme assistance. Si la commande spécifiée par ce que vous avez saisi jusqu'ici est unique, l'interpréteur réalisera la tâche à votre place en complétant l'orthographe de la commande. Sinon, il vous proposera une liste de choix possibles.
En supposant, par exemple, que vous ayez besoin d'une commande susceptible de vous aider à configurer votre carte son mais que vous vous souveniez seulement qu'elle commence par syst, saisissez simplement
[tom@station1 ~]$ syst
Ensuite, appuyez sur la touche Tab (selon votre configuration, vous devrez peut-être appuyer deux fois), ce qui devrait afficher la sortie suivante :
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
À partir de cette sortie, vous pouvez voir le nom de la commande dont vous avez besoin : system-config-soundcard. Cette fonctionnalité vaut également avec les chemins de fichiers. Pour l'utiliser et appréhender sa façon d'opérer, commencez par saisir un chemin de répertoire — mais, après avoir saisi deux ou trois caractères, appuyez sur Tab et regardez si Bash effectue le complétement automatique pour vous. Si ce n'est pas le cas, il se peut qu'il n'y ait pas de caractères pour que Bash fasse la différence avec un autre choix possible. Vous pouvez essayer d'ajouter un ou deux caractères de plus et appuyer sur Tab à nouveau. Le complétement devrait être réalisé, ce qui peut vraiment vous économiser un fastidieux travail de saisie :
cat /usr/include/c++/4.0.4/i486-linux-gnu/bits/messages_members.h
devient cat /u⟹i⟹c+⟹⟹0.⟹i⟹b⟹m⟹
— soit 22 caractères au lieu de 66 !
L'utilisation des touches fléchées peut aussi vous faciliter la vie. Dans Bash, elles sont associées à ce que l'on appelle l'historique des commandes : appuyer sur la touche fléchée Précédent vous ramènera à la commande précédemment exécutée, alors qu'appuyer sur la même touche deux fois vous fera reculer de deux commandes. Bien évidemment, la touche fléchée Suivant fait l'opposé et vous fait avancer dans l'historique des commandes jusqu'à ce qu'il n'en reste plus. Pour voir tout ce que contient l'historique des commandes, saisissez history sur la ligne de commande. On peut rappeler une commande n'importe où dans la liste avec Ctrl-R et saisir une partie de cette commande. Il est également possible de rappeler une commande en notant son numéro dans la sortie de la commande history et en ajoutant un point d'exclamation suivi de ce numéro. Il y a beaucoup d'autres raccourcis disponibles ; vous pouvez en prendre connaissance dans la section « HISTORIQUE » de « man bash ».
Commande | Description | Options courantes | Description |
---|---|---|---|
pwd | Afficher le nom du répertoire de travail en cours | --help | Afficher des informations d'aide |
man | Afficher une page de manuel | [1-8] | Numéro de section de la page de man |
-a | Toutes les informations pertinentes | ||
-k | Mot clé | ||
cd | Changer de répertoire | .. | Monter d'un niveau |
/ | Racine du système de fichiers | ||
~ ou rien | Dossier personnel de l'utilisateur actuel | ||
ls | Répertorier des fichiers | -a --all | Afficher tous les fichiers, même cachés |
-l | Listage long | ||
-h --human-readable | Tailles susceptibles d'être lues par un humain | ||
cp | Copier des fichiers | -i --interactive | Invite avant écrasement |
-r --recursive | Inclure les répertoires sous-jacents | ||
-a --archive | Mode d'archive de tous les fichiers | ||
mv | Déplacer des fichiers | -i --interactive | Invite avant écrasement |
-u --update | Déplacer un fichier s'il y en a un plus récent | ||
-f --force | Pas d'invite avant écrasement | ||
rm | Effacer des fichiers | -r --recursive | Inclure les répertoires sous-jacents |
-f --force | Pas d'invite avant une suppression | ||
-i --interactive | Invite avant une suppression | ||
mkdir | Créer un répertoire | -p --parents | Créer des répertoires parents |
-m --mode=MODE | Définir le mode de fichier | ||
-v --verbose | Afficher une confirmation | ||
rmdir | Supprimer un répertoire | -p --parents | Supprimer un répertoire et ses répertoires parents |
-v --verbose | Afficher une confirmation | ||
--ignore-fail-on-non-empty | Ignorer un échec si les fichiers existent | ||
cat | Concaténer des fichiers | -b --number-nonblank | Numéroter les lignes non vides |
-n --number | Numéroter toute les lignes | ||
-s --squeeze-blank | N'afficher qu'une seule ligne blanche | ||
locate | Rechercher l'emplacement de fichiers | -c --count | Afficher le compte de correspondances à la place |
-i --ignore-case | Ignorer la casse | ||
-S --statistics | Afficher les statistiques de bases de données | ||
less | Afficher page par page en autorisant un retour en arrière. | -N --LINE-NUMBERS | Afficher les numéros de ligne |
-s --squeeze-blank-lines | N'afficher qu'une seule ligne blanche | ||
-E --QUIT-AT-EOF | Faire s'arrêter less à la dernière page | ||
grep | Afficher les lignes correspondant à un motif | -i --ignore-case | Ignorer la sensibilité à la casse |
-R -r --recursive | Lire tous les fichiers situés sous le répertoire | ||
-v --invert-match | Sélectionner les lignes ne correspondant pas | ||
mount | Monter un périphérique | -o | Préciser des options additionnelles |
-t | Spécifier manuellement le type de système de fichiers | ||
-a | Monter tous les systèmes de fichiers dans fstab | ||
umount | Démonter un périphérique | -t | Spécifier le type de système de fichiers |
-v | Mode verbeux | ||
-r | En cas d'échec, remonter en lecture seule |
Joey Prestia est né à Phoenix et a commencé à programmer à l'âge de quatorze ans sur un Timex Sinclair 1000©. 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 RedHat Linux© en 2002, quand on lui a donné une version 6 de RedHat©. Ce fut le début d'une nouvelle passion centrée sur
Linux
. Actuellement, Joey termine sa formation en gestion de réseau sousLinux
et travaille sur le campus pour la RedHat Academy de l'université, en Arizona. Il fait aussi partie de l'équipe de la Linux Gazette comme coordinateur de miroirs.
L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.
Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.
Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.