¿Por qué necesitamos tantos paquetes de emulador de terminal y cuál es su uso?


8

Esto es algo que me ha resultado muy confuso durante mucho tiempo.
Estoy usando Linux pero tengo lagunas en mi comprensión de ciertos aspectos y uno es sobre el terminal.
Cuando llegué a entenderlo, lo que queremos decir con la consola es un emulador de terminales antiguas.
Pero no puedo entender cuál es el trato con esto.
Mientras leía, los mejores terminales antiguos eran la serie VT y el tipo de gráficos vectoriales (Tektronix).
Así que supongo que los emuladores actuales emulan estos.
Ahora mis necesidades en Linux con respecto a la presentación de pantalla han llegado al uso de un esquema de colores para vim y apreciar los colores al hacer diff en archivos.
Pero cuando tengo problemas normalmente encontrar consejos a conjunto xterm-256o screen-256etc.
Además cuando lo haga:ls /lib/terminfo/ Veo una docena de directorios con configuración para (supongo) diferentes tipos de emuladores.

Entonces, mi pregunta es, ¿cómo encajan estos xterm-256o screen-256el resto en la idea de emular solo los terminales superiores en las últimas décadas?
¿Cuál es la necesidad de tener tantos tipos de terminales? ¿Es algo que debería investigar más?
¿Y por qué hoy con la tecnología moderna necesita emular estos terminales antiguos como VT y no tener algo nuevo?

Quizás mis necesidades son demasiado simples como para apreciar las sutilezas de esto, pero ha sido algo que me ha intrigado mucho. Dado que, por ejemplo, si tengo un problema con un esquema de colores, simplemente copio y pego lo que encuentro en google sobre TERM, etc., sin entender realmente qué estoy haciendo o cuál es el problema.

Si alguien me ayuda a comprender esto, sería realmente apreciado


2
Comentario tangencial: establecer su $ TERM es invariablemente un mal consejo (a menos que esté en screeno tmux) ...
jasonwryan

@jasonwryan: en cualquier problema de visualización, todas las publicaciones mencionan cambiar TERM a esto o aquello y esto empeora mi confusión
Jim

Deje que terminfo db haga su trabajo; .bashrcEn el mejor de los casos, soluciones como establecer un valor de término enmascaran un problema subyacente y es probable que solo causen más problemas.
jasonwryan

La idea no es admitir solo los principales terminales de las últimas décadas, sino admitir prácticamente cualquier terminal que pueda haber. Los terminfos no se crean exclusivamente para ser utilizados en sistemas Linux, pero tienen una historia más larga.
Sami Laine

@ SamiLaine: to support pretty much any terminal there might be..¿Pero por qué? ¿Por qué querríamos emular un terminal de los años 70 u 80 sin gráficos o una pantalla verde?
Jim

Respuestas:


9

Los aspectos extraños de Unix generalmente existen por una buena razón, por lo que tiene razón al buscar uno. Sin embargo, en este caso, la buena razón se ha vuelto obsoleta desde hace mucho tiempo, y estás viendo un artefacto antiguo de una época pasada.

Casi el único "terminal" que existe hoy es xterm y variantes. Sus capacidades varían muy ligeramente, de manera que solo son importantes para unos pocos programas. Si solo usa xterm, y nunca toca la variable TERM o mira la base de datos terminfo, su vida generalmente será mejor.

La variable TERM comunica información sobre el terminal a la aplicación a través del entorno, cf. hombre xterm . Cambiarlo no cambia el terminal ; solo representa una funcionalidad de terminal diferente para la aplicación.

En los días de las terminales cableadas, era necesario establecer TERM para representar la terminal conectada. En el caso de xterm, el software puede configurar la variable en sí. Un recorrido rápido por los documentos de vim muestra (como usted menciona en su comentario) que debe cambiarlo para admitir el color. Eso es progreso para ti.

¿Por qué hoy ... emular estos viejos terminales como VT y no tener algo nuevo?

La respuesta es tanto antropológica como técnica.

Antes de la GUI, el acceso a las máquinas Unix era a través de terminales tontas, por ejemplo, VT-100. Conchas y utilidades como top ya existían. Cuando la GUI se volvió tecnológicamente práctica (en la que X desempeñó un papel) en la década de 1980, los usuarios de Unix aún necesitaban usar esos programas, por lo que se inventó xterm para emular el antiguo VT-100.

Fue pensado como un recurso provisional. "Todos sabían" que las terminales eran el pasado y las GUI eran el futuro, y todos esperaban que se accediera a "todo" a través de la GUI. El Macintosh original, por ejemplo, no tenía teclas de flecha porque ¿ por qué las necesitarías ? Seguramente la línea de comando críptica de Unix, con sus vocales faltantes y ayuda indefensa

$ help
help: not found

pronto seguiría el camino de la memoria del tambor y las tarjetas perforadas. Y eso sucedió, de alguna manera: 9 usuarios de cada 10 que ejecutan Windows u OS X nunca ven la línea de comando, excepto cuando el soporte técnico se acerca para arreglar algo.

Luego, dos cosas le sucedieron a la GUI de Unix, tal como fue. Windows en particular drenó el dinero del mercado. Hubo un gran movimiento para estandarizarlo (cf. Sun News y OSF Motif), y luego se detuvo alrededor de 1990. Justo en ese momento, Internet despegó y las cosas gráficas en Unix se movieron al navegador web. La motivación y el dinero (más o menos lo mismo) para diseñar una GUI completa para Unix y hacer que todo en la sección 8 del manual quedara obsoleto desapareció.

También hay otra razón por la que muy pocos previeron: la línea de comando tiene ciertas ventajas sobre la GUI. Las canalizaciones y las expresiones regulares son notablemente poderosas, sin mencionar que se pueden repetir con el historial de shell y los scripts. Incluso en el contexto de una GUI, la línea de comando seguía siendo útil . Tanto es así que se sigue mejorando incluso hoy.

Como sugiere su pregunta, lo que se necesita es un nuevo examen de la suposición de que la GUI triunfaría y una reinvención del terminal como parte integral de él. Necesitamos un nuevo terminal, con fuentes proporcionales y gráficos direccionables en bits en el terminal .

Desafortunadamente, nadie parece estar listo para hacer eso. Ninguna entidad corporativa lo emprenderá; El mercado es enorme, pero sigue siendo solo una pequeña proporción de usuarios de computadoras. El financiador lógico sería una agencia gubernamental como DARPA, pero la investigación en interfaz humana se considera "realizada" en estos días (¿no inventamos ya la GUI?). Hasta que más personas, muchas más personas, reconozcan la necesidad, xterm es su amigo y probablemente también sea el amigo de su nieto.


"" Todos sabían "que las terminales eran el pasado y las GUI eran el futuro, y todos esperaban que se accediera a" todo "a través de la GUI". Cita necesaria.
Faheem Mitha

+ 1.Buena respuesta. Nota: 1) If you just use xterm, and never touch the TERM...¿Cómo es esto posible? Cualquier esquema de colores para vim requiere dicha configuración. Incluso más cuando se usa dentro de un multiplexor. Entonces, no estoy seguro de cómo puedo ser educado lo suficiente como para comprender los cambios de configuración necesarios para cada problema. 2) ... today is xterm & variants¿Qué pasa screen-*? ¿Es parte de las variantes? ¿Cuál es el conjunto exacto que un usuario necesita saber? 3) Si he entendido bien lo encontraron más fácil de apoyo a través de emuladores de todos los terminales que alguna vez existieron construir algo desde cero ->
Jim

Eso es (no crear algo nuevo y admitir todas las terminales existentes) muy extraño para mí
Jim

Gracias por la actualización. Una última pregunta: Usted menciona: The TERM variable communicates information about the terminal...Changing it doesn't change the terminal;Realmente no entiendo este punto. Quiero decir, si TERMno cambia el terminal, ¿qué constituye el terminal y cómo sabe Linux qué terminfo db usar?
Jim

El contenido de la TERMvariable, de hecho, se utiliza como índice en la base de datos terminfo. Cuando lo cambia, está cambiando el valor de una variable de entorno en el proceso de shell que aloja xterm . Eso shell bien puede ser en una máquina diferente: xterm -e 'ssh _machine_name_'. No es un valor que xterm vea y, en consecuencia, no afecta el comportamiento de xterm de ninguna manera. Es confuso porque xterm establece la variable TERM (como un favor para usted) que refleja su configuración (prueba xterm -t), mientras que al mismo tiempo vim requiere que la configure usted mismo.
James K. Lowden
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.