Isso é algo que me confunde há muito tempo.
Estou usando Linux, mas tenho lacunas no meu entendimento de certos aspectos e um é sobre o terminal.
Pelo que entendi, o que queremos dizer com o console é um emulador de terminais antigos.
Mas não consigo entender qual é o problema.
Enquanto eu lia, os melhores terminais antigos eram a série VT e o tipo de gráficos vetoriais (Tektronix).
Portanto, suponho que os emuladores atuais os emulem.
Agora, minhas necessidades no Linux em relação à apresentação de exibição chegaram ao ponto de usar um esquema de cores para o vim e apreciar cores ao fazer diff em arquivos.
Mas quando tenho problemas, geralmente encontro conselhos para definir xterm-256
ou screen-256
etc.
Além disso, quando faço:ls /lib/terminfo/
Eu vejo cerca de uma dúzia de diretórios com configuração para (eu assumo) tipos diferentes de tipos de emulador.
Então, minha pergunta é: como esses xterm-256
ou screen-256
o resto se encaixam na idéia de emular apenas os principais terminais nas últimas décadas?
Qual é a necessidade de ter tantos tipos de terminais? É algo que eu deveria procurar mais?
E por que hoje, com a tecnologia moderna, precisamos imitar esses terminais antigos como o VT e não ter algo novo?
Talvez minhas necessidades sejam muito simples, também aprecio as sutilezas disso, mas é algo que me intrigou bastante. Como, por exemplo, se eu tiver um problema com um esquema de cores, basta copiar e colar o que encontro no google sobre o TERM, etc., sem realmente entender o que estou fazendo ou qual é o problema.
Se alguém me ajudar a entender isso, seria muito apreciado
screen
outmux
) ....bashrc
são, na melhor das hipóteses, mascarando um problema subjacente e provavelmente causam problemas adicionais.to support pretty much any terminal there might be..
Mas por quê? Por que queremos emular um terminal dos anos 70 ou 80 sem gráficos ou uma tela verde?Respostas:
Aspectos estranhos do Unix geralmente existem por um bom motivo, então você está certo em procurar um. Nesse caso, porém, a boa razão já se tornou obsoleta e você está vendo um artefato antigo de uma época passada.
Quase o único "terminal" existente hoje é o xterm & variantes. Suas capacidades variam muito pouco, de maneiras que são importantes para apenas alguns programas. Se você acabou de usar o xterm e nunca tocar na variável TERM ou espiar o banco de dados terminfo, sua vida geralmente será melhor.
A variável TERM comunica informações sobre o terminal para o aplicativo através do ambiente, cf. homem xterm . Mudá-lo não muda o terminal ; representa apenas uma funcionalidade de terminal diferente para o aplicativo.
Nos dias de terminais conectados, era necessário definir TERM para representar o terminal conectado. No caso do xterm, o software pode definir a própria variável. Um rápido tour pelos documentos do vim mostra (como você mencionou no seu comentário) que você precisa alterá-lo para dar suporte à cor. Isso é progresso para você.
A resposta é tanto antropológica quanto técnica.
Antes da GUI, o acesso às máquinas Unix era através de terminais burros, por exemplo, o VT-100. Conchas e utilitários como top já existiam. Quando a GUI se tornou tecnologicamente prática (na qual X desempenhou um papel) na década de 1980, os usuários do Unix ainda precisavam usar esses programas, então o xterm foi inventado para imitar o velho VT-100.
Foi concebido como um paliativo. "Todo mundo sabia" que os terminais eram o passado e as GUIs eram o futuro, e todos esperavam que "tudo" fosse acessado através da GUI. O Macintosh original, por exemplo, não tinha teclas de seta porque por que você precisaria delas ? Certamente a linha de comando enigmática do Unix, com suas vogais ausentes e ajuda indefesa
em breve seguiria o caminho da memória de bateria e cartões perfurados. De certa forma, isso aconteceu: 9 usuários em 10 que executam o Windows ou OS X nunca veem a linha de comando, exceto quando o suporte técnico aparece para corrigir alguma coisa.
Então duas coisas aconteceram com a GUI do Unix, como era. O Windows, em particular, drenou o dinheiro do mercado. Houve uma grande mudança para padronizá-lo (cf. Sun News e OSF Motif), e então parou por volta de 1990. Naquela época, a Internet decolou e as coisas gráficas no Unix mudaram para o navegador da web. A motivação e o dinheiro (praticamente a mesma coisa) para criar uma GUI completa para Unix e tornar obsoleto tudo na seção 8 do manual desapareceram.
Há outro motivo, também, que poucos previram: a linha de comando tem certas vantagens sobre a GUI. Pipelines e expressões regulares são extraordinariamente poderosas, sem mencionar repetíveis no histórico e nos scripts do shell. Mesmo no contexto de uma GUI, a linha de comando permaneceu útil . Tanto é assim que continua a ser aprimorado ainda hoje.
Como sua pergunta sugere, o que é necessário é um reexame da suposição de que a GUI triunfaria e uma reinvenção do terminal como parte integrante dele. Precisamos de um novo terminal, com fontes proporcionais e gráficos endereçáveis por bits no terminal .
Infelizmente, ninguém parece pronto para fazer isso. Nenhuma entidade corporativa o fará; o mercado é enorme, mas ainda é apenas uma pequena proporção de usuários de computador. O financiador lógico seria uma agência governamental como a DARPA, mas a pesquisa em interface humana é considerada "concluída" atualmente (não inventamos a GUI?). Até que mais pessoas - muito mais pessoas - reconheçam a necessidade, o xterm é seu amigo e provavelmente também o seu neto.
fonte
If you just use xterm, and never touch the TERM...
Como isso é possível? Qualquer esquema de cores para o vim requer essa configuração.Mesmo mais ao usá-lo dentro de um multiplexador. Portanto, não tenho certeza de como posso ser educado o suficiente para entender as alterações de configuração necessárias para cada problema? 2)... today is xterm & variants
Sobre o quêscreen-*
? Faz parte das variantes? Qual é o conjunto exato que um usuário precisa conhecer? 3) Se eu entendi corretamente, eles acharam mais simples oferecer suporte através de emuladores que todos os terminais já existiram do que construir algo do zero? ->The TERM variable communicates information about the terminal...Changing it doesn't change the terminal;
eu realmente não entendo esse ponto. Quero dizer, seTERM
não mudar o terminal, o que constitui o terminal e como o linux sabe qual terminfo db usar?TERM
variável, de fato, é usado como um índice no banco de dados terminfo. Quando você o altera, altera o valor de uma variável de ambiente no processo de shell que o xterm está hospedando . Que a Shell pode muito bem estar em uma máquina diferente:xterm -e 'ssh _machine_name_'
. Não é um valor que o xterm vê e, consequentemente, não afeta o comportamento do xterm de forma alguma. É confuso porque o xterm define a variável TERM (como um favor para você) refletindo sua configuração (tryxterm -t
), enquanto, ao mesmo tempo, o vim exige que você a defina.