Petite introduction à la ligne de commande

La ligne de commande est le moyen le plus direct pour donner des ordres à la machine. Si vous utilisez la ligne de commande de GNU/Linux, vous découvrirez vite qu'elle est bien plus puissante et polyvalente que d'autres lignes de commande que vous avez déjà pu utiliser. La raison en est que vous avez non seulement accès à toutes les applications de X, mais aussi à des milliers d'utilitaires en mode console (par opposition au mode graphique) qui n'ont pas d'équivalents graphiques, ou dont les nombreuses options et combinaisons possibles seront difficilement accessibles sous la forme de boutons ou de menus.

Mais, il faut bien l'admettre, la plupart des gens auront besoin d'un peu d'aide pour débuter. Si vous n'êtes pas déjà en mode console et utilisez l'interface graphique, la première chose à faire est de lancer un émulateur de terminal. En accédant au menu GNOME ou KDE ou tout autre gestionnaire de fenêtres que vous pourriez utiliser, vous trouverez un certain nombres d'émulateurs dans le sous-menu Système+Terminaux. Ensuite, choisissez celui que vous voulez, par exemple, Konsole ou XTerm. Selon l'interface graphique que vous utilisez, une icône identifiant l'émulateur de terminal se trouve peut-être sur le tableau de bord (Figure 1.2, « L'icône de l'émulateur de terminal sur le tableau de bord de KDE »).

Figure 1.2. L'icône de l'émulateur de terminal sur le tableau de bord de KDE

L'icône de l'émulateur de terminal sur le tableau de bord 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 reine]$

Ceci suppose que votre nom d'utilisateur soit reine et que votre nom de machine soit localhost (ce qui est le cas si votre machine ne fait pas partie d'un réseau). L'espace après l'invite est disponible pour taper votre commande. Notez que quand vous êtes root, le $ de l'invite devient un # (ceci est vrai dans la configuration par défaut, chacun de ces éléments pouvant être personnalisé). Lorsque vous avez lancé un shell en tant qu'utilisateur et que vous désirez « devenir » root, utilisez la commande su :

# Entrez le mot de passe root ; il n'apparaîtra pas à l'écran
[reine@localhost reine]$ su
Password:
# exit (ou Ctrl-D) vous fera revenir à votre compte utilisateur normal
[root@localhost reine] # exit
[reine@localhost reine]$

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 pour la première fois, vous vous retrouvez 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, soit afficher le répertoire de travail) :

$ pwd
	/home/reine

Nous allons maintenant examiner quelques commandes de base, et vous verrez bientôt que vous ne pourrez plus rien faire sans elles.

cd : changer de répertoire

La commande cd est exactement la même que celle sous 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 de l'utilisateur pierre en tapant cd ~pierre (~ seul signifie votre propre répertoire personnel). Notez qu'en tant qu'utilisateur normal, vous ne pouvez pas 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 soyons root et pratiquons un peu :

$ pwd
	  /root
	  # cd /usr/share/doc/HOWTO
	  # pwd
	  /usr/share/doc/HOWTO
	  # cd ../FAQ-Linux
	  # pwd
	  /usr/share/doc/FAQ-Linux
	  # cd ../../../lib
	  # pwd
	  /usr/lib
	  # cd ~pierre
	  # pwd
	  /home/pierre
	  # cd
	  # pwd
	  /root

Maintenant, redevenons un utilisateur ordinaire en tapant exit ou en pressant Ctrl-D).

Quelques variables d'environnement et la commande echo

Tous les processus ont en fait leurs variables d'environnement. Le shell vous permet de les visualiser 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 : elle 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 n'ira pas chercher les commandes dans le répertoire courant !).

  3. USERNAME : cette variable contient votre nom de login.

  4. UID : elle contient votre identifiant utilisateur.

  5. PS1 : cette variable détermine ce que votre invite affichera, et c'est souvent une combinaison de séquences spécifiques. Vous pouvez lire bash(1) dans les pages de manuel pour plus de renseignements en tapant man bash dans un terminal.

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/pierre
	  $ echo $USERNAME
	  pierre
	  $ echo Bonjour $USERNAME
	  Bonjour pierre
	  $ cd /usr
	  $ pwd
	  /usr
	  $ cd $HOME
	  $ pwd
	  /home/pierre        
	

Vous constaterez que le shell substitue la valeur de la variable avant d'exécuter la commande. Sinon notre cd $HOME n'aurait pas fonctionné. En premier lieu, le shell a remplacé, $HOME par sa valeur, soit /home/reine ; la ligne de commande est donc devenue cd /home/reine, ce que nous recherchions. La même chose s'est produite pour echo $USERNAME, etc.

[Tip]Astuce

Si une de vos variables d'environnement n'existe pas, vous pouvez les créer temporairement en tapant export NOM_VAR_ENV=valeur. Une fois que cela est fait, vous pouvez vérifier qu'elle a bel et bien été créée :

$ export USERNAME=reine
$ echo $USERNAME
reine

cat : afficher le contenu d'un ou de 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 de plusieurs fichiers sur la sortie standard, donc l'écran en temps normal :

$ 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 modules.conf 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 char-major-14 sound
	  alias sound esssolo1
	  keep
	  /bin/zsh
	  /bin/bash
	  /bin/sh
	  /bin/tcsh
	  /bin/csh
	  /bin/ash
	  /bin/bsh
	  /usr/bin/zsh

less : un pager

Son nom est un jeu de mots sur le premier pager existant sous UNIX, qui se nommait more[2]. Un pager 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. Utilisez donc less pour voir des gros fichiers, qui sont trop longs pour l'écran. Par exemple :

less /etc/termcap

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.

ls : dresser la liste des fichiers

Cette commande est équivalente à celle nommée dir sous DOS, mais elle peut accomplir beaucoup plus de choses. 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 dressera la liste des fichiers du répertoire courant. Ses options sont très nombreuses, et nous n'en citerons que quelques-unes :

  1. -a : donne une liste de tous les fichiers, y compris les fichiers cachés (rappelons que sous UNIX, les fichiers cachés sont ceux dont le nom commence par un point (.)) ; l'option -A dresse une liste de « presque » tous les fichiers, à savoir tous les fichiers qu'afficherait l'option -a sauf « . » et « .. ».

  2. -R : établit une liste récursivement, par exemple, tous les fichiers et sous-répertoires des répertoires mentionnés sur la ligne de commande.

  3. -s : affiche la taille en kilo-octets à côté de chaque fichier.

  4. -l : affiche des informations supplémentaires sur les fichiers telles que les permissions associées, le propriétaire et le groupe propriétaire, la taille du fichier et l'heure à laquelle le fichier a été accédé en dernier.

  5. -i : affiche le numéro d'inœud (le numéro unique du fichier sur un système de fichiers, voir Chapitre 9, Le système de fichiers Linux) en face de chaque fichier.

  6. -d : traite 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 courant.

  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'inœud et sa taille en kilo-octets.

  3. ls -l images/*.png : liste tous les fichiers du répertoire images/ dont le nom se termine par .png. Notez que cela comprend aussi le fichier .png, si celui-ci existe.

Raccourcis clavier utiles

Beaucoup de combinaisons de touches sont disponibles, lesquelles peuvent vous faire gagner un temps précieux. Nous supposons que vous utilisez le shell par défaut de Mandrakelinux, soit bash. Toutefois, ces séquences de touches pourraient aussi fonctionner avec d'autres shells.

D'abord, les touches fléchées : bash maintient un historique des commandes que vous tapez, dans lequel vous pouvez vous déplacer 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 : Ctrl-A et Ctrl-E, par exemple, vous amèneront respectivement au début et à la fin de la ligne courante. Backspace et Suppr fonctionneront comme on s'y attend. Un équivalent de Backspace est Ctrl-H, tandis que la combinaison de touches Ctrl-D et la touche Suppr peuvent être substituées. 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 fermera 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. Dans ce cas, ce sera l'édition en cours qui sera interrompue et vous serez ramené à l'invite. Ctrl-L nettoie l'écran. Ctrl-Z arrête une tâche de façon temporaire, elle est suspendue. Ce raccourci clavier est très pratique lorsque vous oubliez de taper le caractère « & » après avoir tapé une commande. Par exemple :

$ xpdf MonDocument.pdf

Donc, vous ne pouvez plus utiliser votre shell puisque la tâche en avant-plan est allouée au processus xpdf process. Pour placer cette tâche en arrière-plan et récupérer votre shell, tapez simplement Ctrl-Z puis bg.

Enfin, parlons un peu de Ctrl-S and Ctrl-Q : ces combinaisons 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 Ctrl-S par inadvertance (après tout, les touches S et D sont très proches l'une de l'autre sur un clavier...). Donc, si vous appuyez sur des touches mais ne voyez rien apparaître dans votre Terminal, essayez Ctrl-Q d'abord et faites attention : tous les caractères que vous aurez tapé entre le Ctrl-S non désiré et le Ctrl-Q apparaîtront alors à l'écran.



[2] More signifie « plus » et less signifie « moins »