Émission Underscore #145 du 26 mai 2019

Actu

Un nouveau Terminal pour Windows 10

Avec une superbe vidéo publicitaire… pour montrer que wow, il fait maintenant la même chose que le terminal sous GNU/Linux 😀
D’ailleurs Windows va bientôt intégrer un noyau Linux complet pour remplacer le sous-système Linux.
De là à dire que Windows est prêt pour le desktop

Les FAILs du mois

Chiptune: Rivalry (C64) – GP Bonzai Censor FLT Bonzai Offence Music by: Stinsen

Sujet : Le Terminal

La console, le terminal originel

À l’origine, l’ordinateur interagissait avec l’humain avec des cartes perforées, des lumières clignotantes et des interrupteurs.

Puis rapidement on a tenté de rendre l’interaction entre homme et machine plus pratique, par l’ajout de périphériques d’entrée/sortie. Ils permettaient aussi de déporter l’accès aux ordinateurs volumineux dans d’autres pièces voire bâtiments.

Un des premiers appareils utilisés fut le téléscripteur. On parle également de téléimprimeur ou de télétype (TTY en notation abrégée).
La balise du HTML, utilisé pour indiquer du code à afficher avec une police à largeur fixe, fait référence à cet appareil justement.

Cet appareil doté d’un clavier et d’une petite imprimante permettait de dialoguer avec un autre appareil du même type par le réseau Télex. Il était aussi utilisable donc pour dialoguer avec les ordinateurs, dont les logiciels ont donc évolué pour inclure ce concept, en gardant le nom, abrégé en “tty” donc. On tappait les commandes au clavier, puis l’ordinateur envoyait le résultat qui était imprimé sur un ruban ou une feuille.

Le terme de “terminal” vient du fait que l’équipement était situé au bout d’un réseau de communication ou en tout cas un câble, c’était donc l'”équipement terminal”. Ce vocabulaire est d’ailleurs toujours employé pour les autres équipements en bout de réseaux, comme les box Internet.

Puis on a rapidement ajouté un écran (cathodique à l’époque) dans la machine, pour obtenir le terminal tel qu’on le voit sur les photos du siècle dernier, qui permettait d’afficher instantanément le résultat (enfin, en tout cas bien plus rapidement que l’impression).

Il y eu de nombreuses marques et modèles de terminaux, et certains ont marqué durablement l’histoire, au point qu’ils existent encore dans toutes les distributions Linux sous forme virtuelle. Par exemple le VT100 de DEC.

Il y a aussi un terminal que les français ont bien connu : le Minitel.

Il faudra qu’on fasse un sujet sur le Minitel d’ailleurs, on a plein de choses à faire avec !

Les séquences d’échappement

Au début, on l’a dit, les premiers terminaux se contentaient d’imprimer les caractères que l’ordinateur lui envoyait.

En gagnant en fonctionnalités, il a fallu ajouter des moyens d’utiliser ces fonctions supplémentaires.

Sauf que le lien entre ordinateur et terminal est resté limité à l’envoi de caractères, ou plutôt de valeurs numériques sur 8 bits, puisque c’est ainsi qu’ils sont codés.

Dans ce cas, on utilise des codes numériques qui sont réservés à des caractères non imprimables, pour indiquer que ce qui suit n’est pas du texte à afficher mais une commande à interpréter.

Des caractères dits “de contrôle” étaient déjà utilisés, par exemple pour interrompre la transmission de l’information (dans le cas où l’imprimante était trop lente par exemple) puis pour reprendre. On a aussi défini un code pour interrompre une commande qui prenait trop de temps. C’est le caractère qui en ASCII a le code 3, et qui est obtenu en appuyant sur ctrl-c. Le système d’exploitation lorsqu’il reçoit ce caractère interrompt donc le programme en cours (sous Unix en lui envoyant le signal SIGINT).

Et puis pour l’affichage, on a définit des séquences entières de caractères.
Le caractères habituellement utilisé pour déclencher ces séquences est celui dont le code ASCII est 27, en octal 033, et qui correspond à la touche ESC, soit “Escape” ou “échappement”.

ANSI, euh, ainsi, on crée ce que l’on appelle des “séquences d’échappement”.

Chaque fabricant a proposé ses propres extensions avec ses propres codes et syntaxes.

Ainsi, les terminaux “compatibles VT100” acceptent les mêmes séquences que le VT100 original, et afficheront par exemple le texte en gras lorsqu’il est précédé des caractères ESC [ 1 m.

Dans l’autre sens aussi on utilise les séquences d’échappement pour faire passer de l’information auxiliaire, par exemple la position de la souris, mais aussi les flèches du clavier qui n’ont pas toujours de code ASCII déterminé.
Parfois, lorsque le terminal ne comprend pas une séquence (parce que l’ordinateur pense qu’il s’agit d’un autre modèle), elle se retrouve partiellement affichée à l’écran.

Lorsque les ordinateurs sont devenus plus petits, les mini puis micro-ordinateurs, ils ont alors intégré la console dans leur propre boîtier, mais on gardé le vocabulaire et l’interface logicielle que les applications utilisaient.

Sous GNU/Linux on a même des consoles virtuelles, accessibles par ctrl-alt-F1 à F6 en général, et qui simulent plusieurs écrans et claviers différents. Elles sont manifestées aux applications par les “devices” /dev/tty1 à /dev/tty6.

Sous DOS aussi on a une console, même si elle est moins souvent mentionnée, le périphérique s’appelle CON:, et les séquences ANSI permettent aussi de changer la couleur ou d’autres attributs du texte. D’ailleurs la séquence pour mettre en gras est identique à celle du VT100.

getty, login

Sur Unix, qui est dès l’origine un système multi-utilisateur, chaque terminal doit donc pouvoir être utilisable par une personne spécifique qui doit s’identifié.

C’est pourquoi le système lance la commande “getty” (jeu de mot get tty) sur chaque device (et aussi sur les ports série par exemple), et qui va attendre un connexion entrante. Lorsqu’une connexion est détectée, elle va lancer la commande “login” qui justement va permettre de s’identifier par son “login” et son mot de passe.

Lorsque c’est fait, la commande login va exécuter le shell, qui est une commande “presque” comme les autres, mais qui permet de lancer d’autres commandes interactivement. Ce que l’on appelle aussi l’invité de commande.

Les émulateurs de terminal

Avec l’arrivée des interfaces graphiques, on aurait pu croire que le terminal disparaîtrait. Pourtant il reste de nombreuses situations où taper une instruction précise est plus pratique que de choisir visuellement entre une liste très limitée d’options. Et puis les gens ont tendance à garder leurs habitudes.

Ils ont donc écrit des programmes pour simuler le fonctionnement des terminaux qu’ils utilisaient avant. Ce que l’on appelle des “émulateurs de terminaux”. Au lieu d’afficher sur un écran, ils affichent la même chose dans une fenêtre de l’interface graphique, et permettent d’en lancer autant qu’on veut et d’utiliser aussi des applications graphiques en même temps.

C’est à cela que l’on fait référence lorsque l’on parle d'”ouvrir un terminal” sous Linux ou même Windows.

Il s’agit de lancer le logiciel qui va simuler le fonctionnement d’un appareil vieux de 40 ans pour pouvoir interagir avec un programme non graphique.

Sous Windows, lorsque l’on lance CMD.COM ou d’autres applications texte, il lance automatiquement cet émulateur de terminal.

Sous GNU/Linux, on peut utiliser l’émulateur de terminal de son choix, et il y en a plein.

Même sous macOS il en existe plusieurs.

La plupart des émulateurs de terminal permettent de customiser les couleurs utilisées, et des thèmes tout prêts sont disponibles.

Il y a même Cool Retro Term qui simule l’affichage des vieux tubes cathodiques à coup d’effets OpenGL.

On peut aussi avoir un faux VT100 au poignet.

Certains s’amusent à dissimuler un Raspberry Pi dans la coque d’un terminal d’époque, et un écran LCD.

Et puis on peut aussi trafiquer un vieux terminal pour afficher d’autres caractères que l’alphabet latin, par exemple celui d’une langue de Star Wars.

De plus, il est possible de se connecter à distance (depuis une autre machine) pour obtenir un “terminal distant”, c’est à dire comme si on était sur place face à un terminal sur la machine distante.

Il y a plusieurs outils pour ça, de telnet à SSH, en passant par d’autres comme tmate qui permet de partager un terminal avec une d’autre personne.

On peut même multiplexer des terminaux, pour fractionner l’écran en plusieurs terminaux séparés, avec Screen ou Tmux.

Et même pour le Minitel il existe des émulateurs, et même des simulateurs, pour faire semblant.

On peut même regarder des films dans un terminal. Et regarder des films de sessions de terminal aussi. Regarder des images avec catimg, voir des vidéo avec aalib ou libcaca.

Les extensions graphiques

C’est peu connu, mais les terminaux ont évolué pour permettre l’affichage d’images multicolores à l’écran, bien avant les serveur X et autres interfaces graphiques. En utilisant des séquences d’échappement spécifiques pour envoyer les données, il est donc possible d’affiche autre chose que des caractères.

Aujourd’hui encore certains écrivent des logiciels pour tirer parti de ces extensions, comme lsix qui affiche des vignettes en listant les images dans un répertoire.

Le Shell

On reparlera du shell dans un prochain numéro, comme on a dit c’est un programme interactif pour lancer d’autres programmes.

Pour aller plus loin

Chiptune: Dope on Wax by Logicoma (PC 64k) by wobble

Agenda

Rappelons que l’agenda est celui de la semaine passée lors des rediffusions le samedi.

Open bidouille

Le fablab vous propose un espace dédié à l’expérimentation, aux projets collectifs et à l’échange de savoirs et de savoir-faire.

Ouvert à tous à partir de 16 ans; Entrée libre.
Tous les jeudis, 18h – 21h,
8fablab, 8 rue Courre Commère, 26400 Crest.

Permanences numériques

Vous avez des questions ? Un problème avec un ordinateur, un téléphone ou une tablette ? Besoin de petites astuces informatique ?
Vous êtes les bienvenus aux permanences numériques pour que l’on trouve ensemble des solutions ou astuces.

Tous les samedis de 10 h à 12 h (sauf pendant les vacances scolaires),
Médiathèque Publique et Universitaire, Place charles Huguenel, 26000 Valence.

Astrologeek

  • sysadmin : Que dit un exorciste pour chasser un stockage en réseau moderne ? Vade retro sata-nas !
  • libriste : /proc c’est net.
  • hacker : je t’ai acheté un nouveau voyage , pour te faire plaisir , je partirai à ta place.
  • microsofteux : ça sert, DOS. #ironème
  • électronicien : J’ai croisé Edgard Alan PoE, il m’a mis au courant.
  • procrastinateur : Quand on aime , on bouge pas