Mis à jour le lundi 2 janvier 2017
  • 30 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours existe en livre papier.

Ce cours existe en eBook.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

Vous pouvez être accompagné et mentoré par un professeur particulier par visioconférence sur ce cours.

J'ai tout compris !

La console, ça se mange ?

Connectez-vous ou inscrivez-vous pour bénéficier de toutes les fonctionnalités de ce cours !

Tout au long de la première partie du livre, nous avons passé notre temps à découvrir en douceur Linux, son bureau et son interface graphique. Par rapport à d'autres systèmes d'exploitation comme Windows, c'est un peu dépaysant au début, mais mine de rien, on retrouve beaucoup de concepts similaires. Je pense donc que vous n'aurez plus besoin de moi pour être capables de manipuler correctement l'interface graphique.

Les choses intéressantes commencent maintenant. C'est à partir d'ici qu'un utilisateur classique de Windows met les pieds dans un environnement totalement nouveau. Vous ne pouvez pas avoir d'a priori, et il y a de fortes chances que ce soit un domaine de l'informatique que vous n'ayez jamais approché (non, non, DOS ne compte pas).

Vous n'avez pas idée de la richesse quasi-infinie offerte par la console. Personne ne peut d'ailleurs prétendre la maîtriser entièrement, c'est vous dire ! Vous aurez donc toujours quelque chose à découvrir. :-)

Pourquoi avoir inventé la console ?

Avant de vous lancer à corps perdu dans l'océan de la console, ce chapitre va vous enseigner les rudiments de survie pour éviter la noyade. Parce que bon, ce serait dommage que vous vous arrêtiez avant le meilleur moment.

Une console
Une console

On va commencer par répondre à cette question hautement fondamentale :

Mais pourquoi ont-ils inventé la console au lieu de l'interface graphique, d'abord ? C'est quand même plus pratique une interface graphique avec une souris ; c'est plus intuitif ! C'est juste pour faire pro, faire compliqué pour faire compliqué et s'assurer que l'informatique reste seulement à la portée de quelques initiés ? Pourquoi ne pas avoir supprimé la console ? C'est archaïque ! (ce sont les questions que vous devez vous poser, je me trompe ?)

Que nenni ! Il y a une explication à tout ; voici une réponse point par point.

Pourquoi avoir inventé la console d'abord, au lieu de l'interface graphique ?

Pour ça, je vous ai mis la puce à l'oreille dès le premier chapitre. La réponse est : parce qu'on n'avait de toute façon pas le choix ! Les débuts de l'informatique et de la console remontent aux débuts des années 70, à une époque où un écran 2 couleurs était un luxe inimaginable et où la puissance de calcul de ces ordinateurs était cent fois plus faible que celle de la calculatrice Casio de ma petite sœur. Bref, vous voyez le genre.
On ne dirait pas comme ça, mais gérer une interface graphique avec plusieurs couleurs ainsi qu'une souris et un certain nombre de fonctionnalités avancées qui vous paraissent aujourd'hui « normales », ça demande de la puissance ! La console était donc à cette époque la seule façon d'utiliser un ordinateur.

L'interface graphique avec la souris, c'est quand même plus intuitif !

Alors là, tout à fait d'accord avec vous. On dira ce qu'on voudra, mais la console n'est PAS intuitive. Quand on débute en informatique, il est de loin plus simple d'appréhender l'interface graphique. En revanche, je suis aujourd'hui persuadé que l'interface graphique de Linux (que ce soit KDE, Unity ou une autre) est aussi intuitive que celle de Windows et de Mac OS. Ça n'a pas toujours été forcément le cas, mais un débutant total en informatique n'aura pas plus de mal à appréhender l'interface graphique de Linux que celle de Windows ; ça, j'en suis totalement convaincu.

Est-ce que c'est juste pour faire pro, inutilement compliqué ?

Les commandes de la console vont peut-être vous sembler être du chinois les premiers temps, et vous allez vous demander à coup sûr si cet amas de lettres vide de sens n'est pas là juste pour faire en sorte que le moins de monde possible puisse utiliser la console (sous-entendu : « Seuls les programmeurs qui ont inventé la console devraient pouvoir l'utiliser. »). Ça, par contre, c'est totalement faux. Tout a été minutieusement pensé, et ce dès les années 60.

  • Les commandes sont courtes, abrégées. C'est pour gagner du temps et aller plus vite. Écrire pwd est moins intuitif que diredansquelrepertoirejesuis, mais après l'avoir écrit deux cents fois dans la journée, vous bénirez les programmeurs qui ont fait ce choix, croyez-moi !

  • Les commandes ne sont pas intuitives. Faux. Il s'agit bien souvent d'une abréviation de termes (en anglais, of course !) et les lettres qu'il faut taper sont généralement choisies en fonction de leur proximité les unes par rapport aux autres pour que vous ayez le moins possible à déplacer les doigts sur le clavier ! Bon, d'accord : à la base, c'est plutôt fait pour les claviers QWERTY anglais qui sont – je le reconnais – plus adaptés pour accéder aux symboles du genre { ] | #, etc. Mais vous n'en mourrez pas. ;-)

Pourquoi ne pas avoir supprimé la console ? C'est archaïque !

Depuis l'invention de l'interface graphique, on pourrait se demander pourquoi on n'a pas supprimé la console (sous-entendu : « Elle ne sert plus à rien »). C'est là que beaucoup se trompent complètement : on met un peu de temps à s'y faire, mais quand on sait s'en servir, on va beaucoup plus vite avec la console qu'avec l'interface graphique. C'est même pire en fait : vous vous rendrez compte à un moment qu'il y a des choses que seule la console peut faire et qu'il serait de toute façon vraiment inutile de recourir à une interface graphique pour les effectuer.

Un exemple ? En mode graphique, allez dans un répertoire qui contient beaucoup de fichiers en tout genre : des fichiers texte, des images, des vidéos… Vous voudriez savoir combien il y a d'images JPEG dans ce dossier : pas facile hein ? :-D
En console, en assemblant quelques commandes, on peut obtenir ce résultat sans problème !

ls -l | grep jpg | wc -l
510

La première ligne est la commande que j'ai tapée, la seconde le résultat. Il y avait donc 510 images JPEG dans le dossier, et on a obtenu le résultat en moins d'une seconde !
On peut même faire encore plus fort et enregistrer directement ce nombre dans un fichier texte :

ls -l | grep jpg | wc -l > nb_jpg.txt

… et on peut aussi envoyer le fichier nb_jpg.txt sur Internet par FTP ou à un ami par e-mail, le tout en une ligne !
La console n'est donc pas morte et n'a pas du tout prévu de l'être !

La plupart des commandes de la console de Linux sont des « copies » d'Unix, ce vieil OS dont je vous ai parlé au tout début, ancêtre parmi les ancêtres. N'allez pas croire que les programmes d'Unix ont été copiés ou « piratés » par Linux ; c'est juste que leur mode d'emploi est le même. Les programmes ont été réécrits par un groupement de programmeurs issus de ce qu'on appelle le projet GNU.
Ce projet a fusionné au bout de quelque temps avec le cœur du système d'exploitation Linux pour donner au final GNU/Linux, qu'on écrit en pratique juste « Linux » car c'est plus court. Mais tout ça, je vous l'ai déjà dit dans le premier chapitre.

L'avantage ? Les commandes n'ont pas bougé et ne bougent pas depuis l'époque d'Unix (soit depuis les années 60). Ce sont les mêmes. Quelqu'un qui utilisait Unix dans les années 60 est capable de se débrouiller avec un Linux d'aujourd'hui. Et il y a fort à parier que ce sera pareil pour les nombreuses années à venir. Vous avez donc juste à apprendre à vous en servir une fois. O.K., il y aura du boulot, mais après ce sera quelque chose qui pourra vous servir toute votre vie !

Ouvrir une console sous MAC OS X
Ouvrir une console sous MAC OS X

La console, la vraie, celle qui fait peur

Bien : il s'agit maintenant de savoir comment approcher la Bête. La question est donc : comment accède-t-on à la console dans son beau Linux depuis son KDE / Unity / XFCE / insérez le nom de votre gestionnaire de bureau ici ?

Les moyens sont variés, très variés. Il y a donc le choix, un peu comme partout sous Linux me direz-vous.

Nous allons commencer par la solution la plus « basique » et que vous utiliserez probablement le moins souvent. Elle vous permet d'accéder à la vraie console (si tant est qu'il y ait une « vraie » console) en pressant une combinaison de touches.

Je vais supposer que vous vous êtes connectés, c'est-à-dire que vous avez entré votre login et votre mot de passe. Vous êtes donc sur votre gestionnaire de bureau, ici Unity (figure suivante).

Gestionnaire de bureau Unity
Gestionnaire de bureau Unity

Vous trouvez qu'il y a trop de couleurs ? Que ça manque de mots compliqués ?
Pas de problème ! Voici les raccourcis à connaître pour accéder à la console :

  • Ctrl + Alt + F1 : terminal 1 (tty1) ;

  • Ctrl + Alt + F2 : terminal 2 (tty2) ;

  • Ctrl + Alt + F3 : terminal 3 (tty3) ;

  • Ctrl + Alt + F4 : terminal 4 (tty4) ;

  • Ctrl + Alt + F5 : terminal 5 (tty5) ;

  • Ctrl + Alt + F6 : terminal 6 (tty6) ;

  • Ctrl + Alt + F7 : retour au mode graphique (ouf !).

Pour tester, tapez Ctrl + Alt + F1.
Votre écran va peut-être clignoter quelques instants ; ne paniquez pas. Vous allez ensuite entrer en mode console plein écran (figure suivante).

Mode console plein écran – C'est beau, hein ?
Mode console plein écran – C'est beau, hein ?

Le login

Vous ne pouvez pas utiliser tout de suite la console : il faut d'abord vous logger. C'est ce que vous demande la dernière ligne :

mateo21-desktop login:

mateo21-desktop : c'est le nom que vous avez donné à votre ordinateur lors de l'installation. Votre ordinateur se présente et vous rappelle où vous êtes, en quelque sorte.
Ça a l'air inutile comme ça, mais avec Linux on peut se connecter à un autre PC facilement en console (on en parlera plus loin), et parfois on ne sait plus si on est dans la console de son PC ou dans celle d'un autre.

Bon, entrez votre login ; dans mon cas c'est mateo21.

On vous demande ensuite votre mot de passe :

Password:

Là, vous rentrez votre mot de passe. Dans mon cas c'est ooops euh… j'ai rien dit.

Ne soyez pas étonnés si les lettres que vous tapez n'apparaissent pas. En fait, il n'y a même pas d'étoiles qui s'affichent à l'écran. Cela permet d'éviter qu'une personne derrière vous compte le nombre de caractères de votre mot de passe (euh oui, sous Linux on est un peu parano).

Si tout va bien, vous devriez voir l'écran de la figure suivante.

Mode console après connexion
Mode console après connexion

La console devrait afficher en bas une ligne similaire à celle-ci :

mateo21@mateo21-desktop:~$ _

C'est bon, vous y êtes. :-)

Les différentes consoles

Sous toute machine Linux, il y a donc non pas une mais six consoles qui fonctionnent en simultané (d'où les six raccourcis différents de Ctrl + Alt + F1 à Ctrl + Alt + F6).

Vous pouvez savoir dans quel terminal vous êtes lors du chargement : il est en effet marqué « tty1 » si vous êtes sur le terminal n°1. Regardez de plus près mon image (figure suivante).

Console « tty1 »
Console « tty1 »

L'information est un peu cachée mais elle est là.
Au pire, vous changez de terminal jusqu'à retrouver celui sur lequel vous êtes ; dès que vous en avez marre, vous pouvez retourner au mode graphique avec Ctrl + Alt + F7.

La console en mode graphique

Bon ! La console en plein écran, c'est bien joli mais pas franchement folichon. Je voulais vous montrer ça parce que c'est la vieille technique qui marche partout, même quand il n'y a pas d'interface graphique installée (c'est le cas sur la plupart des serveurs tournant sous Linux, par exemple).

Mais dans le cas qui nous intéresse, c'est-à-dire le vôtre, il y a bien mieux, croyez-moi. Même les plus fous de Linux préfèrent ouvrir une console dans le mode graphique. Les raisons sont multiples :

  • déjà parce que c'est plus sympa et que vous pouvez en même temps continuer à utiliser d'autres applications graphiques tout en discutant avec vos amis en ligne… ;

  • mais aussi parce que la résolution de l'écran est plus grande et qu'on peut afficher plus de choses à la fois dans la console… ;

  • parce qu'on peut personnaliser l'apparence de la console et mettre, pourquoi pas, une image de fond… ;

  • et qu'on peut aussi utiliser la souris pour copier-coller du texte dans la console (comme quoi, la souris sert quelques rares fois en console !).

Je vous conseille donc vivement d'utiliser autant que possible cette console en mode graphique, notamment tout au long de la lecture de ce livre. C'est juste plus confortable.

Comment accéder à la console en mode graphique ? Tout dépend de votre gestionnaire de bureau. Chacun propose un programme de console différent (mais tous se valent, globalement).

Sous KDE

Pour KDE, il suffit de rechercher "Konsole" dans le lanceur (figure suivante).

La console de KDE
La console de KDE

La console de KDE est visible sur la figure suivante.

Console de KDE
Console de KDE

Vous pouvez vous amuser à changer la couleur de fond ou à insérer une image à la place : vous trouverez ça dans les menus.

Sous Unity

Si vous êtes sous Unity, rendez-vous dans le lanceur et recherchez "Terminal" (figure suivante).

Lancer le Terminal sous Unity
Lancer le Terminal sous Unity

Voyez la console de Unity sur la figure suivante.

Terminal de Unity
Terminal de Unity

L'accès à distance en SSH avec PuTTY

Une des grosses forces de la console, c'est d'être accessible à distance par Internet. Il suffit que votre machine soit connectée au réseau pour que vous puissiez vous logger de n'importe quel ordinateur dans le monde et faire comme si vous étiez chez vous !
Ça peut être pratique pour une foule de choses, comme surveiller l'état d'un téléchargement un peu long, lancer l'exécution d'un programme pour qu'il soit prêt lorsque vous serez rentrés chez vous… mais surtout, c'est comme ça que l'on administre un serveur sous Linux.

Un serveur est – pour faire simple – un ordinateur tout le temps connecté à Internet. Il permet d'offrir des services divers et variés aux internautes. Par exemple, il y a des serveurs web dont le rôle est de… distribuer des pages web.
La grande majorité des serveurs tourne sous Linux. Lorsque vous allez sur un site, il y a de très fortes chances pour que ce soit un serveur Linux qui vous réponde. Les serveurs Windows existent aussi, mais ils sont plus rares et on apprécie en général la stabilité de Linux ainsi que la possibilité de l'administrer à distance en ligne de commande.

On aura l'occasion de reparler de serveurs Linux plus tard (c'est un vaste sujet), mais je souhaite déjà vous montrer rapidement comment on fait pour se connecter à distance.

Telnet et SSH

Pour communiquer entre votre ordinateur et le serveur, il faut un protocole. C'est un ensemble de règles pour que deux ordinateurs puissent discuter entre eux… un peu comme si deux personnes devaient parler la même langue pour avoir une conversation.

Il existe des tonnes et des tonnes de protocoles pour communiquer par Internet, mais pour ce qui est d'accéder à la ligne de commande à distance, c'est-à-dire à la console, il y en a deux principaux.

  • Telnet : le protocole le plus basique, qui présente le gros défaut de ne pas crypter les données échangées entre vous et le serveur. Si un pirate « écoute » vos échanges par un moyen ou un autre, il pourrait récupérer des informations sensibles, en particulier votre mot de passe lorsque vous l'envoyez à la connexion. Ce moyen de connexion reste utilisé mais peu par rapport à SSH.

  • SSH : c'est de très loin le protocole le plus utilisé (et que l'on préfère) car il permet de crypter les données et de sécuriser ainsi la connexion avec le serveur.

Vous l'aurez compris, vous entendrez donc davantage parler de SSH que d'autre chose.

PuTTY

Pour accéder à distance à un ordinateur sous Linux connecté à Internet, vous avez besoin d'un programme spécial capable de restituer la ligne de commande à distance. Ce qui est bien, c'est que vous n'avez pas forcément besoin d'être sous Linux pour vous connecter à un autre ordinateur utilisant cet OS ; on peut très bien le faire depuis Windows, et c'est d'ailleurs la procédure que je vais vous montrer ici.

Il existe plusieurs programmes capables de se connecter en SSH à un serveur Linux. Le plus célèbre sous Windows est sûrement PuTTY : il est gratuit, léger et ne nécessite même pas d'installation (juste un exécutable à lancer).

Pour le télécharger, allez sur le site web du logiciel. Rendez-vous sur la page « Download » et cliquez sur « putty.exe ».

Lorsque vous le lancez, la fenêtre de configuration s'affiche (figure suivante).

Fenêtre de configuration de PuTTY

Il y a beaucoup de pages d'options, comme le montre la section à gauche de la fenêtre. Dans la majeure partie des cas, vous n'aurez pas besoin d'y aller, heureusement.
Seule la première page est en fait vraiment importante : vous devez indiquer en haut dans le champ Host Name le nom d'hôte du serveur (dans mon cas bart.openclassrooms.com) ou encore l'adresse IP de l'ordinateur, ce qui marche aussi bien (c'est juste plus difficile à retenir). Vérifiez que le type de connexion sélectionné en dessous est bien SSH, puis cliquez sur le bouton Open tout en bas.

Après avoir cliqué sur Open, une fenêtre vous demandera lors de la première connexion au serveur si vous voulez stocker l'empreinte de ce dernier. C'est une sécurité pour vérifier que le serveur n'a pas changé depuis la dernière connexion et donc pour éviter que quelqu'un se fasse passer pour le serveur auquel vous avez l'habitude de vous connecter (le monde des pirates est sans pitié !).
Par la suite, on ne vous embêtera normalement plus jamais avec cette fenêtre.

La fenêtre principale de PuTTY s'affiche alors (figure suivante).

Fenêtre principale de PuTTY

Voilà, vous n'avez plus qu'à vous connecter.
Indiquez votre login (par exemple mateo21), puis tapez Entrée.
On vous demande ensuite votre mot de passe ; tapez-le puis faites Entrée.

Si le login et le mot de passe sont bons, vous avez accès à la console du serveur sous Linux comme si vous étiez devant (figure suivante) !

Console distante sur le serveur

Dans l'immédiat, vous ne devriez pas avoir à vous connecter à votre ordinateur à distance en utilisant SSH. Tout ce qu'on va faire sera plutôt effectué en local, c'est-à-dire directement sur votre machine. On utilisera la méthode décrite plus haut, à savoir la console en mode graphique.

Au moins, vous savez désormais qu'il est aussi possible de communiquer à distance. Nous reparlerons plus en détails du protocole SSH plus loin dans ce livre, lorsque nous nous intéresserons à l'administration de serveurs.

En résumé

  • Bien que rebutante au premier abord, la console nous offre une puissance importante. Elle nous permet d'exécuter des actions simples comme complexes, qui sont parfois impossibles à réaliser avec une interface graphique.

  • On peut lancer une console en plein écran avec les touches Ctrl + Alt + F1 à F6, mais il est plus simple aujourd'hui d'ouvrir une console via une interface graphique à l'aide du programme Terminal (sous Unity) ou Konsole (sous KDE).

  • On peut se connecter en console à distance à son ordinateur sous Linux grâce au protocole SSH. Cette technique est très fréquemment utilisée pour administrer des serveurs sur Internet équipés de Linux.

Exemple de certificat de réussite
Exemple de certificat de réussite