juillet 5, 2018

Découvrir Linux Ep. 2: Le terminal

Voici le second épisode de découvrir Linux. Et dans cet épisode on s'intéresse à l'importance du terminal et pourquoi on le manipule parfois sans même le savoir.

Découvrir Linux Ep. 2: Le terminal

Découvrir Linux épisode 2, la version texte


Découvrir GNU/Linux épisode 2

Bonjour tout le monde. Nous voilà dans l’épisode 2 de découvrir GNU/Linux. Si vous n’avez pas vu l’épisode 1, je vous invite à aller le regarder, car je vais reprendre les idées et les explications qu’il y a dedans comme base pour cet épisode. Je vous mets le lien dans la description et en fiche ici en haut de l’écran. Ou là. Je sais jamais de quel coté montrer ça !

Dans cet épisode on va regarder ce qu’il se passe quand on se connecte sur un ordinateur sous Linux. Et pour ça, je vais utiliser le petit raspberry Pi qui est à coté de moi, ici. Alors… c’est parti !


Dans le dernier épisode j’ai expliqué qu’un utilisateur c’est juste une propriété, numérique en plus, d’un programme en cours de fonctionnement, ou d’un processus. Alors si je me mets devant mon raspberry pi, là on voit que j’ai mon bureau. Mais pour arriver là, le système m’a pré-mâché le boulot. Pour comprendre ce qu’il s’est passé, je vais passer en mode texte non connecté. Pour ça, j’appuie sur les touches Ctrl-Alt-F3. Voilà, et ce qu’on voit ici, c’est un programme qui me demande de rentrer mon identifiant, mon login quoi, et mon mot de passe.

Pour l’instant, je ne suis pas connecté, donc, si je rentre correctement mon login et mon mot de passe, ça va être le premier processus qui va tourner avec mon identifiant qui sera lancé. Alors on va essayer et …. voilà, je suis connecté en tant que l’utilisateur pi !

Ça veut dire qu’il y a un programme qui tourne avec mon i dentifiant. Et ce programme c’est ce qu’on appelle un shell. Un shell c’est juste un programme qui attend qu’on lui dise ce qu’on veut faire. Si je suis avec Windows, et que je suis devant mon bureau, le programme qui me présente mon bureau c’est une forme de shell. Il attend qu’on lui dise ce qu’on veut faire. Sur ce bureau, si je veux lancer un programme, je double clique sur l’icône du programme pour l’exécuter. Ici, je suis devant une interface en ligne de commande, je ne peux donc pas cliquer quelque-part. Mais, je peux donner le nom d’un programme que je veux lancer.

Alors, le premier programme que je vais lancer c’est ps. Je tape ps et j’appuie sur entrée.

Ce petit programme m’affiche la liste des programmes qui tournent sous mon identité sur ce terminal

— Sur ce quoi ?

Oui, c’est vrai je n’ai pas encore expliqué cette histoire de terminal. Je vais donc faire un petit aparté sur le terminal. Tu sais que les systèmes Unix ont été développés dans les années 70. C’est vieux

—  Quand même pas plus vieux que toi !

Hé ho !

—  (Sourire)

Donc, à cette époque, pour interagir avec le système, pour avoir accès à un shell, les gars passaient par un télétype. Tiens, ça ressemble à ça.

 — Mais… y’a pas d’écran ?

Non, y’a pas d’écran. Et c’était bien chiant. Mais le télétype lui, était fait pour échanger des informations entre deux endroits. Il n’était pas conçu spécifiquement pour les ordinateurs. Mais plutôt pour le bureau d’une agence de presse à Paris, et le bureau d’une agence de presse à Genève par exemple. Je simplifie un peu, mais tout ce qu’on tapait sur le clavier du télétype à Paris s’affichait à Genève, et vice versa !

— Oh, un peu comme dans skype quoi !

Oui voilà, sauf qu’on ne voit pas ce qu’on tape directement…

— Tu veux dire qu’en fait, on fait du tchat avec l’ordinateur quand on est en mode texte comme ça ?

Tout à fait ! Mais comme c’est très chiant d’en faire avec une imprimante, rapidement les gens ont remplacé l’imprimante par un écran qui n’affiche que du texte.

— Sérieux, on peut pas afficher d’images ?

Non, que du texte, un peu comme le minitel du siècle dernier !!

— Mais comment le système sait que tu as appuyé sur la touche A par exemple ?

Ben c’est simple, quand j’appuie sur le A, c’est le caractère A qui est envoyé du clavier au système. Et le système est sympa, il renvoie le caractère A à l’écran.

— Ok. Il y a un truc que je ne comprends pas. Tu as dit la dernière fois que l’ordinateur ne traitait que des nombres. Mais là, A c’est pas un nombre, c’est ça que je veux comprendre.

Oh, tu as raison, A c’est pas un nombre, et l’ordinateur ne traite que des nombres. Alors comment on va faire ?

Haussement d’épaules interrogatif

L’idée va être d’utiliser une table des caractères. C’est juste un tableau, dans lequel on va dire que, par exemple, quand on envoie le nombre 65, ça représente le A majuscule. Quand on tape B majuscule, c’est le nombre 66 etc. Pour que tout le monde utilise la même table de caractères, une table de caractères a été normalisée sous le nom de ASCII, pour American Standard Code for Information Interchange.

— Et comme ça…. il n’y a que des nombres qui sont traités par le système ! (pouce en l’air)

Hé oui !

— Mais ça, c’est un truc pour les vieux, c’est plus comme ça qu’on travaille aujourd’hui !

Alors c’est vrai qu’on n’utilise plus de terminal aujourd’hui, ou très rarement. Par contre, on utilise un émulateur de terminal. Est qu’est-ce que fait un émulateur de terminal ?

— Ça émule un terminal ?

Oui c’est ça. Quand on discute avec la machine en ligne de commande, on utilise un émulateur de terminal. C’est un programme qui fait comme si on était connecté avec un cable sur l’ordinateur, et qui envoie tout ce qui est tapé au clavier vers l’ordinateur. Et tout ce que l’ordinateur affiche passe par un cable virtuel pour arriver sur l’écran.

— Même là, devant le raspberry ?

Oui. Pareil si tu utilises Putty, c’est un émulateur de terminal.

Mais j’ai une question pour toi. Comment on dit au terminal qu’on veut aller dans la ligne suivante ? Comment on efface toute la page comme ça ? Comment on fait comprendre au terminal qu’on veut faire ça ?

— Ben, on appuie sur entrée, et on va dans la ligne suivante, non ?

Oui mais entrée c’est pas un caractère qu’on affiche !

— Peut être que c’est un code qui dit quoi faire au terminal ?

Souviens toi, quand on tape des trucs sur le clavier, on a la table des caractères qui choisit quels nombres envoyer au système. Hé ben y’a des nombres pour faire un retour à la ligne, quand on appuie sur entrée, pour effacer la page, quand on fait controle-L, pour faire un bip quand on fait contrôle G.

— Oh, on pilote le terminal avec ces caractères alors ?

C’est ce qu’on appelle les caractères de contrôles.

— Si je comprends bien, chaque fois que le terminal, ou l’émulateur de terminal reçoit un truc, c’est un nombre, et ce nombre correspond soit à un caractère à afficher, soit à une action à faire. C’est ça ?

Tout à fait, t’as compris.

— Et la table de caractères ASCII permet d’afficher n’importe quel caractère

Heu….

— ??

Ben en fait, pas tous non, mais on en reparlera dans une autre vidéo des tables de caractères. Car c’est un peu plus compliqué que ça.

— Ah tu penses à ceux qui parlent pas avec les caractères latins, mais avec d’autres alphabets ?

Oui, du coup ça complique la chose, mais pour l’instant on va dire qu’on utilise la table ASCII.

Donc, si j’en reviens à mes moutons, quand je tape ps suivi de entrée, je vois la liste des processus qui m’appartiennent et qui sont sur mon terminal.

— Et si tu fais Ctrl-Alt-F4 t’es sur un autre terminal ?

Oui, et on ne verra pas les programmes du terminal de Ctrl-Alt-F3 du coup.

Mais restons sur ce terminal. Je fait ps et il me dit que j’ai deux programmes qui tournent: le programme bash et le programme ps.

— ps, c’est logique, puisque tu viens de le lancer en tapant son nom, mais bash, c’est quoi ?

Ben en fait, bash, c’est juste le programme qui a été lancé quand je me suis connecté, quand j’ai tapé mon mot de passe tout à l’heure, et qui attend que je lui dise ce que je veux lancer

— Ah c’est le shell alors !

Oui c’est le shell. Et c’est même le shell de connexion de l’utilisateur pi, car c’est celui qui est lancé quand l’utilisateur pi se connecte. Ça sera plus clair si je tape ps, espace, tiret-f

En faisant ça, je lance le programme ps, comme tout à l’heure, mais quand j’ajoute espace tiret-f, ça dit au programme de fonctionner différemment. Et là on voit plus d’infos. Comme par exemple, le UID qui est le numéro de l’utilisateur pi, et le PPID qui est le nom du programme parent.

— Mais, le shell a aussi un programme parent ? Je croyais que c’était le premier !

Alors c’est le premier qui tourne avec l’UID de l’utilisateur, mais c’est pas le premier dans le système. Le shell a été lancé par le programme qui me demande mon login et mot de passe qu’on a vu au début !

Et regarde, on voit bien ici que le processus bash est le parent du processus ps.

Alors voilà pour cette semaine. Je voulais expliquer ce qu’était le terminal et avancer un peu dans la découverte de notre Linux. On n’est pas allé bien loin, mais je compte commencer la découverte de quelques commandes dans le prochain épisode.

Alors comme d’habitude, si vous découvrez ma chaîne, allez faire un petit tour sur les autres vidéos, et n’hésitez pas à vous abonner si ça vous plait, n’hésitez pas à la partager, vous êtes de plus en plus nombreux, ça progresse doucement et ça fait très plaisir !

Si vous êtes un habitué, vous pouvez mettre un pouce en l’air si vous avez appris quelque-chose, ou un pouce rouge si l’épisode était pourri ! Mais vous aussi vous pouvez partager la vidéo et la chaîne pour lui donner un coup de pouce (en l’air !!)

Quant à moi, je vous dis à la semaine prochaine, pour une nouvelle vidéo !

Ciao les geeks

———————————

références

tty

https://commons.wikimedia.org/wiki/File:ASR-33_at_CHM.agr.jpg

vt100:

https://commons.wikimedia.org/wiki/File:Terminal-dec-vt100.jpg