2.4. Petite introduction à la ligne de commande

La ligne de commande est le moyen le plus direct pour parler à la machine. Si vous commencez à l'utiliser, vous remarquerez rapidement qu'elle a une capacité d'expression bien plus puissante que les invites que vous avez peut-être vues utiliser par d'autres systèmes d'exploitation. En effet, ils vous ait donné un accès direct, non seulement à toutes les applications X, mais aussi à des milliers d'utilitaires en mode console (par opposition au mode graphique, c'est-à-dire qui n'ont pas leur équivalent graphique ou leurs nombreuses options et combinaisons potentielles ne pourront jamais être représentées par des boutons et des menus).

Mais, il faut bien l'admettre, cette ligne de commande nécessite un peu d'aide pour débuter. C'est le but de ce chapitre. La première chose à faire, si vous utilisez KDE, est de lancer un émulateur de terminal. Vous avez une icône qui l'identifie clairement dans le panneau (figure 2-3).

Figure 2-3. L'icône de l'émulateur de terminal dans le panneau de KDE

Le shell est le nom du programme avec lequel vous entrez en relation. Vous êtes devant cette invite (« prompt  » en anglais) :

[reine@localhost] ~ $

Ceci suppose que votre nom d'utilisateur est jean et que votre nom de machine est localhost (ce qui est le cas si votre machine ne fait pas partie d'un réseau existant). Ce qui apparaît après l'invite est ce que vous aurez à taper. Notez que quand vous êtes root, le $ de l'invite devient un # (ce qui précède étant seulement dans la configuration par défaut, chacun de ces éléments pouvant être personnalisé). La commande pour « devenir  » root quand vous avez lancé un shell en tant qu'utilisateur est su

 
# Entrez le mot de passe root; il n'apparaîtra pas à l'écran
[darth@localhost] ~ $ su
Password:
# exit vous fera revenir à votre compte utilisateur normal
[root@localhost] darth # exit
[darth@localhost] ~ $

Partout ailleurs dans cette documentation, l'invite sera représentée symboliquement par un $, que vous soyez un utilisateur normal ou root. Il vous sera indiqué quand vous devez être root, alors n'oubliez pas su.

Un # en début de ligne de code représentera un commentaire.

Quand vous lancez le shell la première fois, vous vous retrouverez normalement dans votre répertoire personnel. Pour savoir, à tout moment, dans quel répertoire vous vous situez, tapez la commande pwd (pour Print Working Directory, afficher le répertoire de travail) :

$ pwd
/home/reine

Certaines commandes de base sont indispensables. Nous allons les présenter maintenant

 

2.4.1. cd : changer de répertoire

La commande cd est exactement la même que celle de DOS, avec quelques fonctionnalités en plus. Elle fait exactement ce qu'énonce son acronyme, elle change le répertoire de travail. Vous pouvez utiliser . et .., qui sont respectivement le répertoire courant et son répertoire parent. Taper simplement cd vous ramènera à votre répertoire personnel. Taper cd - vous renverra dans le dernier répertoire visité. Et enfin, vous pouvez spécifier le répertoire d'un utilisateur darth en tapant ~darth (~ seul ou suivi de / signifie votre propre répertoire personnel). Notez qu'en tant qu'utilisateur normal, vous ne pouvez, en général, accéder au répertoire d'un autre utilisateur (à moins qu'il ne l'ait explicitement autorisé ou que tel soit le réglage de la configuration par défaut du système), sauf si vous êtes... root, donc faisons semblant d'être root et entraînons-nous :

$ pwd
/root
$ cd /usr/doc/HOWTO
$ pwd
/usr/doc/HOWTO
$ cd ../FAQ
$ pwd
/usr/doc/FAQ
$ cd ../../lib
$ pwd
/usr/lib
$ cd ~reine
$ pwd
/home/reine
$ cd
$ pwd
/root

Maintenant, redevenons un utilisateur ordinaire.

 

 

 

2.4.2. Quelques variables d'environnement et la commande echo

En fait, tous les processus ont leurs variables d'environnement , et quelquefois ils agissent différemment en fonction des valeurs de certaines d'entre elles. Toutefois, le shell vous autorise à les consulter directement, avec la commande echo. Voici quelques variables intéressantes :

  1. HOME Cette variable d'environnement contient une chaîne de caractères désignant votre répertoire personnel;

  2. PATH Cette variable contient la liste de tous les répertoires dans lesquels le shell doit chercher des exécutables quand vous tapez une commande. Notez que contrairement à DOS, par défaut, le shell ne cherchera pas de commandes dans le répertoire courant;

  3. USERNAME Cette variable contient votre nom de connexion;

  4. UID Contient votre identifiant utilisateur;

  5. PS1 Contient la valeur de votre invite. C'est souvent une combinaison de séquences spécifiques, et vous pouvez lire la page de manuel de man 1 bash pour mieux les comprendre.

Pour que le shell affiche la valeur d'une variable, vous devez mettre un $ devant son nom. Ici, echo va vous être utile :

 
$ echo Bonjour
Bonjour
$ echo $HOME
/home/darth
$ echo $USERNAME
darth
$ echo Bonjour $USERNAME
Bonjour darth
$ cd /usr
$ pwd
/usr
$ cd $HOME
$ pwd
/home/darth        

On constatera que le shell substitue la valeur de la variable avant d'exécuter la commande, sinon notre cd $HOME n'aurait pas fonctionné ici. En fait, le shell a en premier lieu remplacé $HOME par sa valeur, /home/jean ; la ligne est donc devenue cd /home/jean, ce que nous recherchions. Même chose pour echo $USERNAME, etc.

2.4.3. cat : afficher le contenu d'un ou plusieurs fichiers à l'écran

Peu de choses à dire, si ce n'est que cette commande fait simplement et littéralement ce qu'elle énonce : afficher le contenu d'un ou plusieurs fichiers à l'écran!

 
$ cat /etc/fstab
/dev/hda5 / ext2 defaults 1 1
/dev/hda6 /home ext2 defaults 1 2
/dev/hda7 swap swap defaults 0 0
/dev/hda8 /usr ext2 defaults 1 2
/dev/fd0 /mnt/floppy auto sync,user,noauto,nosuid,nodev 0 0
none /proc proc defaults 0 0
none /dev/pts devpts mode=0620 0 0
/dev/cdrom /mnt/cdrom auto user,noauto,nosuid,exec,nodev,ro 0 0
$ cd /etc
$ cat conf.modules shells
alias parport_lowlevel parport_pc
pre-install plip modprobe parport_pc ; echo 7 > /proc/parport/0/irq
#pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start
#alias car-major-14 sound
alias sound esssolo1
keep
/bin/zsh
/bin/bash
/bin/sh
/bin/tcsh
/bin/csh
/bin/ash
/bin/bsh
/usr/bin/zsh

2.4.4. less : un pager

Son nom est un jeu de mots sur le premier pager existant sous Unix, qui se nommait more[1]. Un pagineur est un programme dont le but est d'autoriser la visualisation de longs fichiers page par page (plus précisément, écran par écran). Nous parlons de less plutôt que de more car son utilisation est beaucoup plus intuitive (malgré son nom !). Utilisez donc less pour voir des gros fichiers, qui ne rentrent pas sur un écran. Par exemple :

less /usr/doc/HOWTO/PCMCIA-HOWTO

Pour naviguer dans le fichier, utilisez simplement les touches fléchées haut et bas, et q pour quitter. En fait, less peut faire bien plus : tapez simplement h pour avoir de l'aide (en anglais), et lisez. Mais de toute façon, l'objectif de cette section était de vous permettre de lire de longs fichiers et, nous espérons, cet objectif est maintenant atteint ! :-)

2.4.5. ls : faire une liste de fichiers

Cette commande est équivalente au dir de DOS, mais elle a les capacités d'accomplir beaucoup plus. Et ceci est dû en grande partie au fait que les fichiers, eux-mêmes font nettement plus :-) La syntaxe de la commande ls est comme suit :

ls [options] [fichier|répertoire] [fichier|répertoire...]

Si aucun fichier ou répertoire n'est mentionné sur la ligne de commande, ls fera la liste des fichiers du répertoire courant. Ses options sont très nombreuses, et nous n'en citerons que quelques-unes :

  1. -a Faire une liste de tous les fichiers, y compris les fichiers cachés (sous Unix, les fichiers cachés sont ceux dont le nom commence par un .); l'option -A fait une liste de « presque  » tous les fichiers, ce qui signifie tous les fichiers qu'afficherait l'option -a sauf « .  » et « ..  »;

  2. -R Faire une liste récursivement, i.e. tous les fichiers et sous-répertoires des répertoires mentionnés dans la ligne de commande;

  3. -s Affiche la taille de chaque fichier en kilo-octets;

  4. -l Affiche des informations supplémentaires sur les fichiers;

  5. -i Affiche le numéro d'i-nœud (le numéro attaché spécifiquement au fichier sur un système de fichiers (voir le chapitre chapitre Le système de fichiers de GNU/Linux: ext2fs (EXTended 2 FileSystem) plus loin) en face de chaque fichier;

  6. -d Affiche les répertoires comme des fichiers normaux au lieu de lister leur contenu.

Quelques exemples :

  1. ls -R fait une liste récursive des fichiers du répertoire en cours;

  2. ls -is images/ .. fait une liste des fichiers du répertoire images/ et du répertoire parent, avec pour chaque fichier son numéro d'i-nœud et sa taille en kilo-octets;

  3. ls -al images/*.gif fait une liste de tous les fichiers (y compris les fichiers cachés) du répertoire images/ dont le nom se termine par .gif. Notez que cela comprend aussi le fichier .gif si celui-ci existe.

2.4.6. Raccourcis clavier utiles

Beaucoup de séquences de touches sont disponibles qui peuvent vous faire gagner du temps. Nous vous proposons une liste de celles qui sont essentielles. Nous supposons ici que vous utilisez le shell par défaut de Linux-Mandrake, Bash, même si ces séquences de touches devraient aussi fonctionner avec d'autres shells. Dans cette section, C-<x> signifie Ctrl+<x> (appuyez sur la touche Ctrl et maintenez-la enfoncée; appuyez sur <x>; relâchez les deux touches).

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. 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. Mais il y a plus en matière d'édition : C-a et C-e, par exemple, vous amèneront respectivement au début et à la fin de la ligne courante. Les touches Backspace et Suppr fonctionneront comme on s'y attend. Un équivalent de Backspace est C-h et un équivalent de Del est C-d. C-k effacera toute la ligne depuis la position du curseur jusqu'à la fin de la ligne, et C-w effacera le mot qui précède la position du curseur.

Taper C-d sur une ligne vide vous fera fermer la session actuelle, ce qui est un vrai raccourci par rapport à la commande exit. C-c interrompra la commande en cours de fonctionnement ; sauf si vous éditez une ligne, auquel cas ce sera l'édition en cours qui sera interrompue et vous serez ramené(e) à l'invite. C-l nettoie l'écran.

Enfin, il existe C-s et C-q : ces séquences de touches servent respectivement à suspendre et à restaurer le flux de caractères sur un terminal. Elles sont très peu utilisées, mais il peut arriver que vous tapiez C-s par inadvertance. Donc, si vous appuyez sur des touches mais que vous ne voyez rien apparaître à l'écran, essayez C-q d'abord et faites attention : tous les caractères que vous avez tapés entre le C-s non désiré et le C-q apparaîtront alors sur l'écran.

Notes

[1]

« More  » signifie plus et « less  » signifie moins : ces deux termes étant pris ici comme des noms propres.


Tux sur Étoile de MandrakeSoft Linux est une marque déposée de Linus Torvalds. Toutes les autres marques et copyrights sont la propriété de leurs auteurs respectifs.
Sauf mention contraire, tout le contenu de ces pages et toutes les images sont Copyright MandrakeSoft S.A. et MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/