Chapitre 14. Débuter en console

1. Notions de base
2. Les commandes Unix

1. Notions de base

1.1. Se connecter

Une fois que la procédure d'installation est terminée, vous arrivez à l'invite de connexion :

Figure 14.1. Invite de connexion

Invite de connexion

Pour vous connecter, vous avez le choix entre :

  • Vous connecter en tant que root : tapez root, appuyez sur Entrée, ensuite tapez le mot de passe root que vous avez défini pendant la procédure d'installation et appuyez sur Entrée. Vous voyez alors apparaître un certain nombre de messages et enfin l'invite de commande, ou prompt du root :

    Figure 14.2. Prompt du root

    Prompt du root

    Quand vous êtes ainsi connecté en tant que root, vous avez tous les droits sur le système.

  • Vous connecter en tant que simple utilisateur : tapez le nom d'utilisateur que vous avez défini pendant la procédure d'installation, appuyez sur Entrée, ensuite tapez le mot de passe associé à cet utilisateur et appuyez sur Entrée. Vous voyez alors apparaître un certain nombre de messages et enfin le prompt de l'utilisateur :

    Figure 14.3. Prompt de l'utilisateur formation sur la machine debian

    Prompt de l'utilisateur formation sur la machine debian

    Quand vous êtes ainsi connecté en tant que simple utilisateur, vous n'avez que des droits limités sur le système.

[Attention] Attention

Rappel : l'utilisation du compte root est réservée à la modification de la configuration du système, à l'installation de paquets et aux rares tâches qui nécessitent les droits de root. Pour toutes les autres tâches, il faut utiliser un compte utilisateur. En effet, l'utilisation du compte root est dangereuse : une fausse manipulation peut détruire le système, ce qui est impossible en tant que simple utilisateur !

1.2. Convention

Dans toute la suite de cette formation, nous adopterons la convention suivante :

  • les commandes qui devront être exécutées en tant que root auront un prompt # :

    # commande_à_exécuter
    
  • les commandes qui devront être exécutées en tant que simple utilisateur auront un prompt % ou $ :

    % commande_à_exécuter
    

1.3. Passer d'une console à une autre

Vous n'avez peut-être pas encore remarqué, mais vous disposez de plusieurs consoles. Au démarrage, vous arrivez sur la première console, appelée tty1 (teletypewriter). Vous pouvez passer à la deuxième console (appelée tty2) avec la combinaison de touches Alt+F2. Pour revenir à la première console, utilisez la combinaison de touches Alt+F1. Vous pouvez aussi utiliser Alt+Flèche gauche et Alt+Flèche droite (ou les touches fenêtre) pour passer d'une console voisine à l'autre. Par défaut, il y a 6 consoles.

1.4. Se déconnecter

Pour vous déconnecter, et retourner à l'invite de connexion, vous pouvez saisir la commande logout puis valider avec Entrée, ou bien utiliser la combinaison de touches Ctrl+d.

2. Les commandes Unix

2.1. Les bases

[Avertissement] Avertissement

Nous présenterons certaines notions de façon volontairement inexacte, pour les rendre plus simple à appréhender. Après avoir pris connaissance avec l'interpréteur de commandes (le shell), nous vous conseillons de prendre le temps de lire un guide plus complet, comme celui d'Isabelle Vollant. Vous y trouverez probablement des différences avec ce que j'écris : dans ce cas, fiez-vous à ce guide plutôt qu'à notre texte !

Lorsque vous utilisez un shell, chaque ligne que vous tapez est une commande, qui invoque un logiciel ou une commande interne du shell. Ces commandes peuvent accepter des arguments, qui sont alors séparés par des espaces. Ainsi, pour invoquer la commande cp avec deux arguments, on tape :

$ cp /usr/share/doc/bash/copyright copyright2

Par ailleurs, certaines commandes acceptent également des options, qui sont en général données comme premiers arguments, et précédées par des tirets. Voici par exemple une commande ln avec une option -s et deux arguments :

$ ln -s /usr/share/doc/bash/copyright copyright2
[Astuce] Astuce

À partir de maintenant, nous vous invitons à essayer chaque commande au fur et à mesure que nous les présenterons : nous avons fait en sorte qu'elles puissent s'enchaîner.

2.1.1. Le répertoire courant

Toutes vos commandes sont exécutées dans le répertoire courant. Ce répertoire est indiqué dans le prompt : dans l'exemple suivant, la commande ls va travailler sur le répertoire /usr/share :

formation@debian:/usr/share$ ls

Lorsque vous commencez à utiliser un shell, après vous être connecté, le répertoire courant est fixé à votre répertoire personnel, /home/<utilisateur>, qui est abrégé par le symbole ~. Vous pouvez changer de répertoire avec la commande cd (change directory). Avec un argument, elle vous envoie dans le répertoire donné ; sans argument, elle vous ramène à votre répertoire personnel :

formation@debian:~$ cd /usr/share
formation@debian:/usr/share$ cd
formation@debian:~$ 

2.1.2. Utiliser les répertoires

Lorsque vous souhaitez agir sur un fichier, vous devez indiquer l'endroit où il se trouve — son chemin — à la commande que vous utilisez pour cela. Il y a trois façons de désigner un fichier :

de façon absolue

en indiquant son chemin complet, en commençant par la racine /, par exemple : /usr/share/doc/bash/copyright ;

de façon relative

en indiquant son chemin par rapport au répertoire courant, sans commencer par une /, par exemple doc/bash/copyright, si vous vous situez dans le répertoire /usr/share/ ;

par rapport à votre répertoire personnel

en indiquant son chemin à partir de votre répertoire personnel, abrégé par le caractère ~, par exemple : ~/.bash_history

Par ailleurs, vous pouvez remonter d'un niveau dans un chemin, en utilisant le répertoire spécial .., que l'on appelle répertoire parent. Ainsi, quand vous êtes dans votre répertoire personnel, vous pouvez passer dans le répertoire /home/, puis dans /, puis retourner dans votre répertoire personnel ainsi :

~$  cd ..
/home$  cd ..
/$ cd
~$ 

Enfin, vous pouvez désigner le répertoire courant en utilisant le répertoire spécial . :

~$  cd .
~$  (on change… vers le répertoire courant)
[Note] Note

Lorsque vous écrivez le chemin d'un fichier, les sous-répertoire composant ce chemin doivent être séparés par des barres obliques / et non des contre-obliques comme sous Windows et DOS. Un répertoire est un fichier, d'un genre particulier, et peut être désigné avec ou sans barre oblique finale : /usr/share est équivalent à /usr/share/ (voire même à /usr//share/// si ça vous amuse).

Vous pouvez créer un nouveau répertoire en utilisant la commande mkdir (make directory), et en précisant le chemin (absolu, relatif, ou relatif à votre répertoire personnel) du répertoire que vous voulez créer. Ainsi, ces quatre commandes sont équivalentes (la dernière est un exemple d'utilisation d'un répertoire parent) :

~$  mkdir test
~$  mkdir /home/formation/test
~$  mkdir ~/test
~$  mkdir ../formation/test

Enfin, vous pouvez effacer un répertoire avec la commande rmdir (remove directory) :

~$  mkdir test2
~$  rmdir test2

2.1.3. Utiliser des fichiers

Voici quelques commandes indispensables, à essayer et à apprendre :

cp

copie un fichier vers un répertoire, en changeant éventuellement son nom :

$ cp /usr/share/doc/bash/copyright .
$ cp /usr/share/doc/bash/copyright copyright2
mv (move)

déplace un fichier vers un répertoire, en changeant éventuellement son nom :

$ mv copyright test/
$ mv copyright2 test/copyright3
rm (remove)

supprime un fichier :

$ rm test/copyright3
ls

affiche le nom d'un fichier, le contenu d'un répertoire, ou du répertoire courant :

$ ls
test
$ ls test
copyright
$ ls test/copyright
test/copyright
cat (concaténer)

affiche le contenu d'un ou plusieurs fichiers (les uns à la suite des autres, sans séparation, dans ce cas) :

$ cat test/copyright
[la licence de Bash]
$ cat test/copyright test/copyright
[la licence de Bash en deux exemplaires]
more et less

affiche le contenu d'un long fichier, avec la possibilité de naviguer dedans (avec la touche Espace, les flèches, et la touche q pour quitter).

2.1.4. Nettoyage

Nous avons déjà commencé à peupler votre répertoire personnel de fichiers sans intérêt… Il est temps de faire le ménage. Pour cela, nous allons utiliser une option spéciale de la commande rm : -rf, un raccourci pour -r -f, qui permet d'effacer un répertoire :

  • en descendant dans le répertoire et tous ses sous-répertoires éventuels pour les effacer avant,

  • en forçant l'effacement sans demander de confirmation à chaque fois.

Dans notre cas, nous avons un répertoire test/ à effacer :

$ rm -rf test

2.2. Commandes incontournables

Si vous ne deviez retenir que deux commandes : apropos et man.

apropos

Cette commande permet... de chercher une commande, à partir d'un mot-clef ! Ainsi, si vous cherchez comment naviguer sur le Web :

% apropos web
w3m (1)              - a text based Web browser and pager

man

Cette commande permet d'afficher le manuel de n'importe quel commande, fichier de configuration, fonction C… installé sur votre système. Pour afficher le manuel de w3m que nous avons découvert grâce à la commande apropos :

% man w3m

2.3. Autres commandes utiles

Voici quelques commandes qui vous seront certainement utiles un jour ou l'autre : ln, find, grep, chmod, chown et chgrp.

Elles ne vous seront pas utiles tout de suite : pour les découvrir, vous pouvez consulter à leurs manuels respectifs (man ln, man find…) ainsi que le site d'Isabelle Vollant, qui les décrit de façon très pratique.

2.4. Les principales commandes système

mount

Une première explication de l'utilisation de cette commande a déjà été donnée dans la section Intégration d'un système de fichiers (montage) de la première partie de cette formation. Elle sert à intégrer un système de fichiers dans un autre. Elle doit être exécutée en tant que root. Sa syntaxe habituelle est :

# mount -o options /dev/periphérique /mnt

à condition que le type de système de fichiers soit supporté par le noyau et que le répertoire /mnt existe déjà.

Pour démonter ce système de fichiers, il suffit de taper en root :

# umount /mnt

Par contre, n'importe quel utilisateur peut taper la commande mount tout court pour savoir quels sont les systèmes de fichiers montés à l'instant d'exécution de la commande.

su

Cette commande sert à changer d'utilisateur, après avoir rentré le bon mot de passe, bien sûr !

su -

permet de devenir root.

su - toto

permet de devenir l'utilisateur toto.

[Note] Note

Le passage de root à un simple utilisateur par la commande su toto se fait sans rentrer le mot de passe de l'utilisateur toto.

ps

Cette commande sert à lister les processus et leurs propriétés. Sous Unix, chaque tâche s'exécute au sein d'un ou plusieurs processus. Chaque processus a un PID (Processus ID) qui lui est propre. Si un processus plante, les autres processus ne sont pas affectés. On peut tuer un processus avec la commande kill ou killall.

ps

liste les processus de l'utilisateur qui exécute la commande qui sont rattachés au terminal depuis lequel la commande est exécutée.

ps -u

liste les processus de l'utilisateur qui exécute la commande quel que soit le terminal de rattachement.

ps -au

liste les processus de tous les utilisateurs quel que soit le terminal de rattachement.

ps -aux

liste les processus de tous les utilisateurs même ceux qui ne sont rattachés à aucun terminal. Cette commande liste donc l'intégralité des processus du système. Elle est équivalente à la commande ps -A

ps -faux

liste tous les processus du système en les regroupant par enchaînement d'exécution.

kill et pkill

Les commandes kill et killall servent à envoyer des signaux à des processus.

kill 42

envoie le signal TERM au processus dont le PID est 42. En gros, on demande au processus 42 de se terminer tout seul. Bien sur, on ne peut terminer que les processus que l'on a soi-même lancé, sauf le root qui peut faire ce qu'il veut avec tous les processus.

kill -9 42

envoie le signal KILL au processus dont le PID est 42. Quand un processus est planté, c'est le seul moyen de l'arrêter, car la commande précédente n'aura pas d'effet.

pkill vlc

envoie le signal TERM au processus dont le nom est vlc. Cette commande est à répéter plusieurs fois s'il y a plusieurs processus qui portent le nom vlc.

pkill -9 vlc

envoie le signal KILL au processus dont le nom est vlc.

2.5. Autres commandes système

passwd

change le mot de passe (il commence par demander l'ancien mot de passe quand il s'agit d'un simple utilisateur).

groups

pour savoir à quels groupes appartient l'utilisateur.

adduser toto

ajoute l'utilisateur toto au système.

deluser toto

supprime l'utilisateur toto du système.

adduser toto disk

ajoute l'utilisateur toto au groupe disk (modification effective après que l'utilisateur toto se soit déconnecté puis reconnecté).

deluser toto audio

enlève l'utilisateur toto du groupe audio.

df -h

fait le point sur l'espace libre de chaque système de fichiers monté.

du -sh

mesure la taille du répertoire depuis lequel il est exécuté.

halt

éteint l'ordinateur.

reboot

redémarre l'ordinateur.

uptime

indique depuis combien de temps le système n'a pas redémarré. Certains s'amusent ainsi à faire des concours d'uptime pour prouver la stabilité de leur machine sous GNU/Linux !

w et who

permet de savoir quels utilisateurs sont connectés sur le système et ce qu'ils font.

lspci, lsusb et lshw

donnent des informations sur les périphériques connectés à votre système (PCI, AGP, USB ou autres) : très pratique pour avoir des renseignements sur son matériel ! Attention, quand la commande affiche Unknown device, cela veut juste dire que l'identifiant du périphérique n'a pas de nom correspondant dans la base de données de ces commandes, mais cela ne veut pas dire que le périphérique marche, ne marche pas ou ne marchera jamais sous Linux !

cat /proc/cpuinfo

donne plein d'informations sur le processeur.

uname -a

donne des informations sur le système, notamment la version du noyau.

2.6. Les petites commandes pratiques

date

donne l'heure, selon l'horloge de votre ordinateur ;

cal

affiche un calendrier du mois courant. cal 2005 affiche un calendrier de l'année 2005 ;

bc

une calculatrice en mode texte ;

Ctrl+l

permet de rafraîchir l'affichage d'une application en console quand l'affichage est perturbé (par un message d'erreur par exemple) ;

Ctrl+s et Ctrl+q

permettent respectivement de bloquer et de débloquer l'affichage d'un terminal ;

Ctrl+c

arrête un programme, ou annule une commande en cours de saisie ;

Ctrl+d

saisi avec une ligne de commande vierge, termine le shell en cours et déconnecte donc l'utilisateur.