Perché abbiamo bisogno di così tanti pacchetti di emulatori di terminali e a che cosa servono?


8

Questo è qualcosa che mi confonde da molto tempo.
Sto usando Linux ma ho delle lacune nella mia comprensione di alcuni aspetti e uno riguarda il terminale.
Come ho capito, ciò che intendiamo con console è un emulatore di vecchi terminali.
Ma non riesco a capire quale sia il problema con questo.
Mentre leggevo i migliori vecchi terminali erano la serie VT e il tipo di grafica vettoriale (Tektronix).
Quindi presumo che gli attuali emulatori li emulino.
Ora le mie esigenze in Linux riguardo alla presentazione del display sono arrivate fino all'utilizzo di un sistema di colori per VIM e ad apprezzare i colori quando si fa diff nei file.
Ma quando ho problemi di solito trovo consigli da impostare xterm-256o screen-256ecc.
Inoltre, quando lo faccio:ls /lib/terminfo/ Vedo circa una dozzina di directory con configurazione per (presumo) diversi tipi di tipi di emulatore.

Quindi la mia domanda è: come si adattano questi xterm-256o tutti screen-256gli altri all'idea di emulare solo i terminali migliori negli ultimi decenni?
Qual è la necessità di avere così tanti tipi di terminali? È qualcosa che dovrei esaminare di più?
E perché oggi con la tecnologia moderna è necessario emulare questi vecchi terminali come VT e non avere qualcosa di nuovo?

Forse i miei bisogni sono troppo semplici per apprezzare le sottigliezze di questo, ma è stato qualcosa che mi ha lasciato perplesso. Dal momento che, ad esempio, se ho un problema con uno schema di colori, copio e incolla ciò che trovo su Google su TERM, ecc. Senza capire veramente cosa sto facendo o qual è il problema.

Se qualcuno mi aiuta a capire questo sarebbe davvero apprezzato


2
Osservazione tangenziale: impostare $ TERM è invariabilmente un cattivo consiglio (a meno che non sia in screeno tmux) ...
jasonwryan

@jasonwryan: In qualsiasi problema di visualizzazione, tutti i post menzionano il passaggio a questo o quello e questo peggiora la mia confusione
Jim

Lascia che terminfo db faccia il suo lavoro; soluzioni alternative, come l'impostazione di un valore di termine, nella .bashrcmigliore delle ipotesi mascherano un problema di fondo e possono solo causare ulteriori problemi.
Jasonwryan,

L'idea non è quella di supportare solo i migliori terminali degli ultimi decenni, ma di supportare praticamente qualsiasi terminale ci possa essere. I terminali non sono creati esclusivamente per essere utilizzati su sistemi Linux ma hanno una storia più lunga.
Sami Laine,

@SamiLaine: to support pretty much any terminal there might be..Ma perché? Perché dovremmo voler emulare un terminale degli anni '70 o '80 senza grafica o schermo verde?
Jim,

Risposte:


9

Strani aspetti di Unix di solito esistono per una buona ragione, quindi hai ragione a cercarne uno. In questo caso, tuttavia, la buona ragione è ormai da tempo diventata obsoleta e stai guardando un antico manufatto di un'epoca passata.

Quasi l'unico "terminale" esistente oggi è xterm e varianti. Le loro capacità variano leggermente, in modi che contano solo pochi programmi. Se usi semplicemente xterm e non tocchi mai la variabile TERM o dai un'occhiata al database terminfo, la tua vita sarà generalmente migliore.

La variabile TERM comunica informazioni sul terminale per l'applicazione attraverso l'ambiente, cf. man xterm . Cambiarlo non cambia il terminale ; rappresenta solo diverse funzionalità del terminale per l'applicazione.

Ai tempi dei terminali cablati, era necessario impostare TERM per rappresentare il terminale collegato. Nel caso di xterm, il software può impostare la variabile stessa. Un breve tour dei documenti di VIM mostra (come menzionato nel tuo commento) che devi cambiarlo per supportare il colore. Questo è progresso per te.

perché oggi ... emulare questi vecchi terminali come VT e non avere qualcosa di nuovo?

La risposta è tanto antropologica quanto tecnica.

Prima della GUI, l'accesso alle macchine Unix era tramite terminali stupidi, ad es. VT-100. Conchiglie e utilità come top esistevano già. Quando la GUI divenne tecnologicamente pratica (in cui X ebbe un ruolo) negli anni '80, gli utenti di Unix dovevano ancora usare quei programmi, quindi xterm fu inventato per emulare il vecchio VT-100.

Era inteso come un punto fermo. "Tutti sapevano" che i terminali erano il passato e che le GUI erano il futuro e tutti si aspettavano che "tutto" fosse accessibile tramite la GUI. Il Macintosh originale, ad esempio, non aveva i tasti freccia perché perché ne avresti bisogno ? Sicuramente la criptica riga di comando di Unix, con le sue vocali mancanti e l'aiuto impotente

$ help
help: not found

sarebbe presto andato la via della memoria del tamburo e delle schede perforate. E questo è accaduto, in un certo senso: 9 utenti su 10 che eseguono Windows o OS X non vedono mai la riga di comando tranne quando il supporto tecnico passa per risolvere qualcosa.

Poi sono successe due cose alla GUI di Unix, come era. Le finestre in particolare hanno scaricato i soldi dal mercato. Ci fu una grande mossa per standardizzarlo (cfr. Sun News e OSF Motif), e poi si fermò intorno al 1990. Proprio in quel periodo Internet decollò e le cose grafiche in Unix passarono al browser web. La motivazione e il denaro (praticamente la stessa cosa) per progettare una GUI completa per Unix e rendere obsoleto tutto ciò che è nella sezione 8 del manuale.

C'è anche un'altra ragione che pochi prevedevano: la riga di comando presenta alcuni vantaggi rispetto alla GUI. Pipeline ed espressioni regolari sono straordinariamente potenti, per non dire ripetibili con cronologia e script della shell. Anche nel contesto di una GUI, la riga di comando è rimasta utile . Tanto che continua ad essere migliorato anche oggi.

Come suggerisce la tua domanda, ciò che è necessario è un riesame del presupposto che la GUI trionferà e una reinvenzione del terminale come parte integrante di esso. Abbiamo bisogno di un nuovo terminale, con font proporzionali e grafica indirizzabile nel terminale .

Sfortunatamente, nessuno sembra pronto a farlo. Nessuna entità aziendale lo intraprenderà; il mercato è enorme, ma solo una piccola parte degli utenti di computer. Il finanziatore logico sarebbe un'agenzia governativa come la DARPA, ma oggigiorno la ricerca sull'interfaccia umana è considerata "fatta" (non abbiamo già inventato la GUI?). Fino a quando più persone - molte più persone - riconosceranno la necessità, xterm è tuo amico e probabilmente sarà anche amico di tuo nipote.


"" Tutti sapevano "che i terminali erano il passato e le GUI erano il futuro, e tutti si aspettavano che" tutto "fosse accessibile tramite la GUI." Citazione necessaria.
Faheem Mitha,

+ 1.Bella risposta. Nota: 1) If you just use xterm, and never touch the TERM...Come è possibile? Qualsiasi schema di colori per Vim richiede tale configurazione. Ancora di più quando lo si utilizza all'interno di un multiplexer. Quindi non sono sicuro di come posso essere istruito abbastanza da comprendere le modifiche alla configurazione necessarie per ciascun problema? 2) ... today is xterm & variantsChe dire screen-*? Fa parte delle varianti? Qual è il set esatto che un utente deve conoscere? 3) Se ho capito bene hanno trovato più semplice supportare tramite emulatori tutti i terminali mai esistiti che costruire qualcosa da zero? ->
Jim

Questo è (non creare qualcosa di nuovo e supportare tutti i terminali esistenti in assoluto) molto strano per me
Jim,

Grazie per l'aggiornamento. Un'ultima domanda: dici: The TERM variable communicates information about the terminal...Changing it doesn't change the terminal;non capisco davvero questo punto. Voglio dire se TERMnon cambia il terminale, allora cosa costituisce il terminale e come fa Linux a sapere quale terminfo db usare?
Jim,

Il contenuto della TERMvariabile, infatti, viene utilizzato come indice nel database terminfo. Quando lo cambi, stai cambiando il valore di una variabile d'ambiente nel processo di shell che xterm ospita . Quel guscio potrebbe essere su una macchina diversa: xterm -e 'ssh _machine_name_'. Non è un valore che xterm vede, e di conseguenza non influisce in alcun modo sul comportamento di xterm. È confuso perché xterm imposta la variabile TERM (come un favore per te) in base alla sua configurazione (prova xterm -t), mentre allo stesso tempo vim richiede di impostarla tu stesso.
James K. Lowden,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.