Зачем нам так много пакетов эмулятора терминала и как они используются?

8

Это то, что меня так смущало в течение долгого времени.
Я использую Linux, но у меня есть пробелы в моем понимании определенных аспектов, и один касается терминала.
Как я понял, что мы имеем в виду под консолью - это эмулятор старых терминалов.
Но я не могу понять, что за дело с этим.
Насколько я читал, лучшими старыми терминалами были серии VT и тип векторной графики (Tektronix).
Поэтому я предполагаю, что нынешние эмуляторы подражают им.
Теперь мои потребности в Linux в отношении отображения на дисплее достигли того, что я использую цветовую схему для vim и оцениваю цвета при выполнении различий в файлах.
Но когда у меня возникают проблемы, я обычно нахожу совет по их установке xterm-256и screen-256т. Д.
Кроме того, когда я делаю:ls /lib/terminfo/ Я вижу около десятка каталогов с конфигурацией для (я полагаю) различных типов эмуляторов.

Поэтому мой вопрос: как эти xterm-256или screen-256и все остальные вписываются в идею эмулировать только верхние терминалы в последние десятилетия?
Зачем нужно иметь так много типов терминалов? Это то, что я должен изучить больше?
И почему сегодня с помощью современных технологий нужно эмулировать такие старые терминалы, как VT, а не иметь что-то новое?

Возможно, мои нужды слишком просты, и я понимаю, насколько это тонко, но это было тем, что меня сильно озадачило. Так как, например, если у меня есть проблема с схемой цветов, я просто копирую вставить то, что я нахожу в Google о TERM и т.д., не понимая, что я делаю или в чем проблема.

Если бы кто-то помог мне осуществить это, я был бы очень признателен

Джим
источник
2
Тангенциальное замечание: установка $ TERM - это всегда плохой совет (если только он не находится в screenили tmux) ...
jasonwryan
@jasonwryan: При любых проблемах с отображением во всех постах упоминается переключение TERM на то или иное, и это усугубляет мое замешательство
Джим
Пусть terminfo db сделает свою работу; Обходные пути, такие как установка значения термина в .bashrc, в лучшем случае маскируют основную проблему и только могут вызвать дальнейшие проблемы.
jasonwryan
Идея не в том, чтобы поддерживать только лучшие терминалы прошлых десятилетий, а в том, чтобы поддерживать практически любой терминал. Terminfos не созданы исключительно для использования в системах Linux, но имеют более длинную историю.
Сами Лэйн
@SamiLaine: to support pretty much any terminal there might be..Но почему? Зачем нам эмулировать терминал 70-х или 80-х без графики или зеленого экрана?
Джим

Ответы:

9

Странные аспекты Unix обычно существуют по уважительной причине, так что вы правильно их найдете. В этом случае, тем не менее, веская причина давно устарела, и вы смотрите на старинный артефакт ушедшей эпохи.

Примерно единственным «терминалом», существующим сегодня, является xterm & варианты. Их возможности варьируются очень незначительно, так что это важно только для нескольких программ. Если вы просто используете xterm и никогда не трогаете переменную TERM или не заглядываете в базу данных terminfo, ваша жизнь, как правило, будет лучше.

Переменная TERM передает информацию о терминале к приложению через окружающую среду, ср человек xterm . Изменение не меняет терминал ; он просто представляет различные функциональные возможности терминала для приложения.

Во времена проводных терминалов необходимо было установить TERM для представления подключенного терминала. В случае xterm программное обеспечение может установить переменную самостоятельно. Краткий обзор vim docs показывает (как вы упоминаете в своем комментарии), что вы должны изменить его, чтобы поддерживать цвет. Это прогресс для вас.

почему сегодня ... эмулировать эти старые терминалы как VT и не иметь что-то новое?

Ответ как антропологический, так и технический.

До графического интерфейса доступ к Unix-машинам осуществлялся через тупые терминалы, например VT-100. Оболочки и утилиты типа top уже существовали. Когда графический интерфейс стал технологически практичным (в котором X сыграл свою роль) в 1980-х годах, пользователям Unix все еще нужно было использовать эти программы, поэтому был изобретен xterm для эмуляции старого VT-100.

Это было задумано как пробел. «Все знали», что терминалы - это прошлое, а графические интерфейсы - будущее, и все ожидали, что «все» будет доступно через графический интерфейс. Например, в оригинальном Macintosh не было клавиш со стрелками, потому что зачем они вам нужны ? Конечно, загадочная командная строка Unix, с отсутствующими гласными и беспомощной помощью

$ help
help: not found

скоро пойдет по пути памяти барабанов и перфокарт. И это произошло, в некотором роде: 9 пользователей в 10 под управлением Windows или OS X никогда не видят командную строку, за исключением случаев, когда техническая поддержка приходит, чтобы что-то исправить.

Затем произошли две вещи с графическим интерфейсом Unix, как это было. В частности, Windows вывела деньги с рынка. Был предпринят большой шаг к его стандартизации (см. Sun News и OSF Motif), а затем он остановился примерно в 1990 году. Примерно в это же время начал работать Интернет, и графические объекты в Unix переместились в веб-браузер. Мотивация и деньги (почти одно и то же) на разработку полного графического интерфейса для Unix и отрисовку всего в разделе 8 руководства устарели исчезли.

Есть и другая причина, которую очень немногие предвидели: командная строка имеет определенные преимущества перед графическим интерфейсом. Конвейеры и регулярные выражения очень мощные, не говоря уже о том, что их можно повторять с помощью истории оболочки и сценариев. Даже в контексте графического интерфейса командная строка оставалась полезной . Настолько, что он продолжает расти даже сегодня.

Как следует из вашего вопроса, необходимо пересмотреть предположение о том, что графический интерфейс победит, и переосмыслить терминал как его неотъемлемую часть. Нам нужен новый терминал с пропорциональными шрифтами и графикой с битовой адресацией в терминале .

К сожалению, никто не готов к этому. Ни одно юридическое лицо не возьмется за это; Рынок огромен, но все еще лишь небольшая часть пользователей компьютеров. Логическим спонсором было бы правительственное агентство, такое как DARPA, но исследования по человеческому интерфейсу в наши дни считаются «выполненными» (разве мы не изобрели GUI?). Пока больше людей - гораздо больше людей - не осознают необходимость, xterm - ваш друг и, вероятно, тоже друг вашего внука.

Джеймс К. Лоуден
источник
«Все знали», что терминалы были в прошлом, а графические интерфейсы были в будущем, и все ожидали, что «все» будет доступно через графический интерфейс ». Нужна цитата.
Фахим Митха
+ 1. Отличный ответ. Обратите внимание: 1) If you just use xterm, and never touch the TERM...Как это возможно? Любая схема цветов для vim требует такой конфигурации. Еще больше при использовании ее внутри мультиплексора. Поэтому я не уверен, как я могу быть достаточно образованным, чтобы понимать изменения конфигурации, необходимые для каждой проблемы? 2) ... today is xterm & variantsКак насчет screen-*? Это часть вариантов? Каков точный набор, о котором пользователь должен знать? 3) Если я правильно понимаю, им было проще поддерживать через эмуляторы все терминалы, которые когда-либо существовали, чем создавать что-то с нуля? ->
Джим
Это (не создание чего-то нового и поддержка всех существующих терминалов) очень странно для меня
Джим
Спасибо за обновления. Последний вопрос: вы упоминаете: The TERM variable communicates information about the terminal...Changing it doesn't change the terminal;я не совсем понимаю этот момент. Я имею в виду, что если TERMтерминал не меняет, то из чего состоит терминал и как linux знает, какой файл terminfo db использовать?
Джим
TERMДействительно, содержимое переменной используется как индекс в базе данных terminfo. Когда вы измените его, вы изменяете значение переменной окружения в процессе оболочки , что Xterm является хостинг . Эта оболочка вполне может быть на другой машине xterm -e 'ssh _machine_name_'. Это не значение, которое видит xterm, и, следовательно, никак не влияет на поведение xterm. Это сбивает с толку, потому что xterm устанавливает переменную TERM (в пользу вас), отражающую ее конфигурацию (try xterm -t), в то время как vim требует, чтобы вы установили ее самостоятельно.
Джеймс К. Лоуден