Pourquoi avons-nous besoin d'autant de packages d'émulateurs de terminaux et quelle est leur utilisation?

8

C'est quelque chose qui me dérange depuis si longtemps.
J'utilise Linux mais j'ai des lacunes dans ma compréhension de certains aspects et l'un concerne le terminal.
Comme je l'ai compris, ce que nous voulons dire avec la console est un émulateur d'anciens terminaux.
Mais je ne peux pas comprendre quel est le problème avec cela.
Comme je l'ai lu, les meilleurs vieux terminaux étaient la série VT et le type de graphiques vectoriels (Tektronix).
Je suppose donc que les émulateurs actuels les imitent.
Maintenant, mes besoins sous Linux concernant la présentation d'affichage ont atteint jusqu'à l'utilisation d'un schéma de couleurs pour vim et l'appréciation des couleurs lors de la différence dans des fichiers.
Mais quand j'ai des problèmes, je trouve généralement des conseils pour régler xterm-256ou screen-256etc.
De plus, quand je le fais:ls /lib/terminfo/ Je vois environ une douzaine de répertoires avec une configuration pour (je suppose) différents types de types d'émulateurs.

Ma question est donc la suivante: comment ces éléments xterm-256ou screen-256les autres s'inscrivent-ils dans l'idée d'émuler uniquement les terminaux supérieurs au cours des dernières décennies?
Quelle est la nécessité d'avoir autant de types de terminaux? Est-ce quelque chose que je devrais approfondir?
Et pourquoi aujourd'hui avec la technologie moderne besoin d'émuler ces vieux terminaux comme VT et ne pas avoir quelque chose de nouveau?

Peut-être que mes besoins sont trop simples, trop apprécier les subtilités de cela, mais c'est quelque chose qui m'a beaucoup intrigué. Étant donné que, par exemple, si j'ai un problème avec un schéma de couleurs, je viens de copier-coller ce que je trouve dans Google à propos de TERM, etc. sans vraiment comprendre ce que je fais ou quel est le problème.

Si quelqu'un m'aide à comprendre cela, ce serait vraiment apprécié

Jim
la source
2
Remarque tangentielle: définir votre $ TERM est toujours un mauvais conseil (à moins qu'il ne soit dans screenou tmux) ...
jasonwryan
@jasonwryan: Dans tous les problèmes d'affichage, tous les messages mentionnent le passage de TERM à ceci ou cela et cela aggrave ma confusion
Jim
Laissez la terminfo db faire son travail; des solutions de contournement telles que la définition d'une valeur de terme .bashrcmasquent au mieux un problème sous-jacent et ne sont susceptibles que de provoquer d'autres problèmes.
jasonwryan
L'idée n'est pas de prendre en charge uniquement les meilleurs terminaux des dernières décennies, mais de prendre en charge à peu près n'importe quel terminal. Les terminfos ne sont pas créés exclusivement pour être utilisés sur des systèmes Linux mais ont un historique plus long.
Sami Laine
@SamiLaine: to support pretty much any terminal there might be..Mais pourquoi? Pourquoi voudrions-nous émuler un terminal des années 70 ou 80 sans graphiques ni écran vert?
Jim

Réponses:

9

Les aspects étranges d'Unix existent généralement pour une bonne raison, vous avez donc raison d'en chercher un. Dans ce cas, cependant, la bonne raison est devenue obsolète depuis longtemps, et vous regardez un artefact antique d'une époque révolue.

À peu près le seul "terminal" qui existe aujourd'hui est xterm & variantes. Leurs capacités varient très légèrement, d'une manière qui ne concerne que quelques programmes. Si vous utilisez simplement xterm et que vous ne touchez jamais à la variable TERM ou que vous jetez un œil à la base de données terminfo, votre vie sera généralement meilleure.

La variable TERM communique des informations sur le terminal à l'application via l'environnement, cf. homme xterm . Le changer ne change pas le terminal ; il représente simplement une fonctionnalité de terminal différente de l'application.

À l'époque des terminaux câblés, il était nécessaire de définir TERM pour représenter le terminal connecté. Dans le cas de xterm, le logiciel peut définir la variable elle-même. Une visite rapide des documents Vim montre (comme vous le mentionnez dans votre commentaire) que vous devez le changer pour prendre en charge la couleur. C'est un progrès pour vous.

pourquoi aujourd'hui ... émuler ces vieux terminaux comme VT et ne pas avoir quelque chose de nouveau?

La réponse est autant anthropologique que technique.

Avant l'interface graphique, l'accès aux machines Unix se faisait via des terminaux stupides, par exemple VT-100. Des coques et des utilitaires comme top existaient déjà. Lorsque l'interface graphique est devenue technologiquement pratique (dans laquelle X a joué un rôle) dans les années 1980, les utilisateurs Unix avaient encore besoin d'utiliser ces programmes, donc xterm a été inventé pour émuler le vieux VT-100.

C'était censé être un bouchon. «Tout le monde savait» que les terminaux étaient le passé et les interfaces graphiques étaient l'avenir, et tout le monde s'attendait à ce que «tout» soit accessible via l'interface graphique. Le Macintosh d'origine, par exemple, n'avait pas de touches fléchées car pourquoi en auriez-vous besoin ? Sûrement la ligne de commande Unix cryptique, avec ses voyelles manquantes et son aide impuissante

$ help
help: not found

allait bientôt suivre le chemin de la mémoire du tambour et des cartes perforées. Et cela est arrivé en quelque sorte: 9 utilisateurs sur 10 exécutant Windows ou OS X ne voient jamais la ligne de commande, sauf lorsque le support technique passe pour réparer quelque chose.

Ensuite, deux choses sont arrivées à l'interface graphique Unix, telle qu'elle était. Windows en particulier a vidé l'argent du marché. Il y a eu un grand mouvement pour le standardiser (cf. Sun News et OSF Motif), puis il s'est arrêté vers 1990. À peu près à ce moment-là, Internet a décollé et les choses graphiques sous Unix sont passées dans le navigateur Web. La motivation et l'argent (à peu près la même chose) pour concevoir une interface graphique complète pour Unix et rendre tout ce qui est dans la section 8 du manuel obsolète ont disparu.

Il y a aussi une autre raison pour laquelle très peu de gens prévoyaient: la ligne de commande a certains avantages par rapport à l'interface graphique. Les pipelines et les expressions régulières sont remarquablement puissants, sans parler de leur répétabilité avec l'historique du shell et les scripts. Même dans le contexte d'une interface graphique, la ligne de commande est restée utile . À tel point qu'il continue d'être amélioré encore aujourd'hui.

Comme votre question le suggère, ce qui est nécessaire est un réexamen de l'hypothèse selon laquelle l'interface graphique triompherait et une réinvention du terminal en tant que partie intégrante de celui-ci. Nous avons besoin d'un nouveau terminal, avec des polices proportionnelles et des graphiques adressables par bit dans le terminal .

Malheureusement, personne ne semble prêt à le faire. Aucune personne morale ne l’entreprendra; le marché est énorme, mais ne représente qu'une infime proportion d'utilisateurs d'ordinateurs. Le bailleur de fonds logique serait une agence gouvernementale comme la DARPA, mais la recherche sur l'interface humaine est considérée comme "terminée" de nos jours (n'avons-nous pas déjà inventé l'interface graphique?). Jusqu'à ce que plus de gens - beaucoup plus de gens - reconnaissent le besoin, xterm est votre ami, et probablement aussi l'ami de votre petit-fils.

James K. Lowden
la source
"" Tout le monde savait "que les terminaux étaient le passé et les interfaces graphiques étaient l'avenir, et tout le monde s'attendait à" tout "être accessible via l'interface graphique." Citation requise.
Faheem Mitha
+ 1.Bonne réponse. Vous remarquez: 1) If you just use xterm, and never touch the TERM...Comment est-ce possible? Tout schéma de couleurs pour vim nécessite une telle configuration . Encore plus lors de son utilisation dans un multiplexeur. Donc, je ne sais pas comment puis-je être suffisamment instruit pour comprendre les changements de configuration nécessaires pour chaque problème? 2) ... today is xterm & variantsQu'en est-il screen-*? Cela fait-il partie des variantes? Quel est l'ensemble exact qu'un utilisateur doit connaître? 3) Si je comprends bien, ils ont trouvé plus simple de prendre en charge via des émulateurs que tous les terminaux ont jamais existé que de construire quelque chose à partir de zéro? ->
Jim
C'est (ne pas créer quelque chose de nouveau et prendre en charge tous les terminaux existants) très bizarre pour moi
Jim
Merci pour la mise à jour. Une dernière question: Vous mentionnez: The TERM variable communicates information about the terminal...Changing it doesn't change the terminal;je ne comprends pas vraiment ce point. Je veux dire si TERMne change pas le terminal, alors qu'est-ce qui constitue le terminal et comment linux sait-il quelle terminfo db utiliser?
Jim
En effet, le contenu de la TERMvariable est utilisé comme index dans la base de données terminfo. Lorsque vous le modifiez, vous modifiez la valeur d'une variable d'environnement dans le processus shell hébergé par xterm . Cette coquille peut bien être sur une autre machine: xterm -e 'ssh _machine_name_'. Ce n'est pas une valeur que xterm voit, et par conséquent n'affecte en rien le comportement de xterm. C'est déroutant car xterm définit la variable TERM (comme une faveur pour vous) reflétant sa configuration (essayez xterm -t), tandis que vim vous demande en même temps de la définir vous-même.
James K. Lowden