TERM
, условно относится к описанию терминала. Первоначально он назывался разделом текстового файла termcap (начиная с конца 1970-х годов). В середине 1980-х terminfo был представлен как скомпилированный (двоичный) файл, который экономил время при получении описания терминала. Хотя оба доступны для всех Unix-подобных платформ, termcap сегодня редко используется, за исключением случаев, когда используется эмуляция terminfo.
Для обоих этих форматов данных приложения обычно извлекают данные из базы данных терминала с помощью повторно используемых библиотек программирования. Библиотека программирования terminfo обычно является частью библиотеки curses более высокого уровня, хотя она может быть предоставлена (например, необязательно, как в ncurses) в виде отдельного библиотечного файла. Независимо от того, предоставляется ли библиотека terminfo отдельно или нет, в этих случаях она считается частью библиотеки curses. (Есть также несколько других высокоуровневых библиотек, таких как сленг).
Запись базы данных терминала для каждого терминала содержит свойства, называемые возможностями . Они сообщают библиотеке curses (или приложениям, использующим напрямую termcap / terminfo), как выполнять полезные операции, такие как очистка экрана. Для большинства терминалов это escape-последовательность. Несколько терминалов могут не поддерживать escape-последовательность для этой цели; Есть и другие возможности, которые могут быть объединены библиотекой curses для очистки экрана (например, очистка каждой строки). Не все возможности являются escape-последовательностями. Есть логические и число возможностей , а также, например, сказать ли поддерживается функция, и как велико - то (например, размер экрана).
Каждое приложение, которое использует termcap / terminfo, использует соответствующую библиотеку для извлечения описания терминала, а также для выполнения таких операций, как подстановка параметров в определенные возможности. Например, большинство терминалов предоставляют возможность перемещать курсор на заданное количество столбцов или строк из его текущего местоположения. Функции tparm
(или tiparm
) подставляют число в возможность получения фактической escape-последовательности.
Библиотека curses содержит приложения командной строки, которые поддерживают базу данных терминала ( tic , infocmp ) и некоторые из них, которые используются в сценариях оболочки для запросов к базе данных терминала или выполнения низкоуровневых операций с возможностями терминала ( tput , tset / reset ).
Есть нетрадиционные приложения, которые используют TERM
без использования базы данных терминала. Большинство из них просто жестко кодируют свое поведение (например, GNU grep, groff и текстовые веб-браузеры links / links2 / elinks), в то время как у некоторых есть то, что составляет их собственную терминальную базу данных (например, GNU ls), но с использованием других правил и поведение.
Вернуться к вопросу (ам):
Так, где эта переменная интерпретируется и позволяет, например, сбросить экран моего терминала, используя CTRL + l, если я установлю правильное значение там?
Приложение и базовые библиотеки интерпретируют это значение. Для controlLэтого это может быть сделано для bash в библиотеке readline (которая использует интерфейс программирования termcap).
Например, кто проверяет, какие цвета поддерживаются (xterm vs xterm-256color)?
В базе данных терминала хранится количество цветов в качестве возможности, а также возможности установки цветов переднего плана и фона и сброса цветов. Некоторые приложения объединяют эти возможности с другой информацией (такой как утверждение разработчика, которое xterm
«действительно» xterm-256color
).
Оболочка?
Большинство оболочек используют интерфейс программирования termcap для получения информации о терминале. Тем не менее, они являются приложениями, которые имеют свое собственное поведение (не обязательно такое же, как у curses).
Приложение или библиотека типа ncurses?
(см. выше: оболочки - это особый тип применения)
И где определены возможные значения / типы терминалов?
Обычно это находится в базе данных терминала, используемой приложениями, использующими библиотеки curses или сленга. Некоторые приложения жестко запрограммированы или используют частную базу данных.
Дальнейшее чтение: