Возможности терминала - Terminal capabilities

В вычислительной технике и телекоммуникациях возможности из Терминал - это различные функции терминала, помимо того, что доступно в чистом телетайп, которые хост-системы (и программы, которые на них работают) могут использовать. Они (в основном) из коды управления и коды выхода которые могут быть отправлены на терминал или получены от него. Коды выхода, отправленные на терминал, выполняют различные функции, которые ЭЛТ терминал (и программное обеспечение эмуляторы терминала ) способна, а телетайп - нет; например, перемещение курсора терминала в нужные места на экране, очистка и прокрутка всего или части экрана, включение и выключение подключенных принтерных устройств, программирование программируемых функциональных клавиш, изменение цветов и атрибутов дисплея (например, обратное видео ) и установка отображаемых строк заголовков. Коды выхода, полученные от терминала, обозначают такие вещи, как функциональная клавиша, клавишу со стрелкой, и другой специальный ключ (домашний ключ, конечный ключ, ключ помощи, Ключ PgUp, Клавиша PgDn, вставить ключ, удалить ключ, и так далее) нажатия клавиш.[1][2]

Unix и POSIX: termcap, terminfo и др.

В Unix и других POSIX -соответствующие системы, поддерживающие Интерфейс терминала POSIX, эти возможности закодированы в базах данных, которые настраиваются системным администратором и доступны из программ через terminfo библиотека (которая заменяет старую termcap библиотека), на которой, в свою очередь, построены библиотеки, такие как проклятия и ncurses библиотеки, с помощью которых прикладные программы используют возможности терминала для предоставления текстовые пользовательские интерфейсы с окнами, диалоговыми окнами, кнопками, метками, полями ввода, меню и т. д.[3][4] Предполагается, что это позволяет прикладным программам быть независимыми от фактических характеристик терминала. Им не нужно жестко встраивать в свой код какие-либо управляющие коды или escape-последовательности, и поэтому у них нет проблем с использованием на ряде терминалов с рядом возможностей.[5]

termcap

В termcap (за "срококончательный колпачокспособностей ") была разработана для систем BSD. Она использует базу данных, хранящуюся в файле / etc / termcap. Эта база данных состоит из серии записей (каждая из которых состоит из одной или нескольких строк в файле, соединенных символами обратной косой черты на концах каждой строки, которая продолжается до следующей), каждая из которых представляет возможности конкретного терминала. Поля записи содержат имя типа терминала или имена, за которыми следует последовательность возможностей, разделенных двоеточиями.[3][2] Сами поля возможностей делятся на три группы:

характеристики терминала
К ним относятся такие вещи, как (номинальное) количество строк и столбцов, которые есть на дисплее терминала, будет ли вывод автоматически переноситься на следующую строку, когда он достигает конца строки, и так далее.[2]
управляющие последовательности отправляются в качестве вывода на терминал
Они включают управляющие коды и управляющие последовательности, отправляемые на терминал, чтобы он мог выполнить какое-либо действие (не обязательно действие отображения). Примером одного из самых простых является последовательность вывода для очистки экрана, которая может быть подача формы (ASCII FF) на некоторых типах терминалов, но может, скажем, быть escape-последовательностью ␛2J на терминале, который требует Escape-последовательности ANSI.[6][2]
управляющие последовательности, отправленные терминалом в качестве входных данных
Они включают управляющие коды и escape-последовательности, которые терминал отправляет на хост для представления различных действий и событий, таких как функциональные клавиши и клавиши со стрелками нажимается.[2]

terminfo

Terminfo ("срококончательный Информацияrutation ") была разработана для систем System V. Она использует базу данных, хранящуюся в нескольких файлах в каталоге, которые могут быть разными (в разных Unix и POSIX-совместимых системах) / usr / lib / terminfo, / USR / доля / terminfo, или даже / USR / доля / библиотека / terminfo.[5] (Его расположение даже не одинаково для разных дистрибутивы Linux.[7])

В отличие от базы данных termcap, база данных terminfo является компилируемой, машиночитаемой базой данных, которая создается служебной программой из удобочитаемого формата исходного файла. тик. Их можно декомпилировать из машиночитаемой формы обратно в удобочитаемую с помощью другой служебной программы, infocmp.[8] Например, команда для вывода определения терминала «vt100» в удобочитаемой форме:[7]

infocmp vt100

Использование машиночитаемого формата должно было избежать ненужных накладных расходов в прикладных программах, использующих такие системы, как библиотека termcap, многократного синтаксического анализа содержимого базы данных для чтения полей записи. Использование нескольких файлов должно было избежать аналогичных накладных расходов на анализ содержимого базы данных для поиска записи базы данных для целевого типа терминала. Индекс имени типа терминала фактически представляет собой обычную структуру каталогов файловой системы Unix / POSIX. Первоначально у Unix были серьезные проблемы с производительностью при работе с большими каталогами, содержащими много файлов, и поэтому terminfo использует двухуровневую структуру, разделяя записи каталога по первой букве на ряд подкаталогов. Более современные форматы файловых систем, используемые в системах Unix, не страдают от таких проблем (поскольку их структуры каталогов на диске больше не являются простыми массивами записей, а организованы в виде деревьев или хеш-таблиц), и поэтому необходимость в этом элементе дизайна , который все еще существует в современных реализациях terminfo, с тех пор исчез.[8]

Служебные программы для реализации возможностей терминала

В системах Unix tput используется для поиска конкретной возможности в базе данных системы и вывода ее в командную стандартный вывод (который, по-видимому, является терминалом, с помощью которого должна выполняться функция, обозначенная способностью).[1] Одна из самых простых операций - очистка экрана. Имя поля базы данных, в котором хранится выходная последовательность для этого: Чисто, поэтому аргументы команды для tput программа для очистки экрана [1]

tput ясно

Другая операция - инициализация или сброс терминала до известного состояния по умолчанию (атрибутов символов, шрифтов, цветов и т. Д.). Команды для этого:[9]

tput init

и

tput сброс

Обычно tput команда использует тип терминала, указанный в СРОК переменная окружения, один из управление переменными среды интерфейса терминала POSIX. Однако это можно изменить, чтобы tput для поиска терминала другого типа в базе данных с помощью параметра командной строки для команды.[1] Так, например, чтобы выполнить последовательность сброса, соответствующую типу терминала с именем «vt100» в базе данных (обычно DEC VT100 терминал), независимо от типа терминала, указанного в переменных среды, команда:

tput -T vt100 сброс

Рекомендации

Что поддерживает что

  1. ^ а б c d Афзал 2008, п. 419.
  2. ^ а б c d е Фриш 2002, п. 770.
  3. ^ а б Гроб 1991, п. 115.
  4. ^ Гроб 1991, п. 372.
  5. ^ а б Фриш 2002, п. 769.
  6. ^ Кумар 2004, п. 417.
  7. ^ а б Блюм 2008, п. 31.
  8. ^ а б Раймонд 2004, п. 144–145.
  9. ^ Winsor 2001, п. 244–245.

Используемые источники

  • Афзал, Амир (2008). UNIX без ограничений: подход для начинающих (5-е изд.). Прентис Холл. ISBN  978-0-13-119449-6.CS1 maint: ref = harv (связь)
  • Блюм, Ричард (2008). Командная строка Linux и Библия сценариев оболочки. Библейская серия. Джон Уайли и сыновья. ISBN  978-0-470-25128-7.CS1 maint: ref = harv (связь)
  • Гроб, Стивен (1991). UNIX system V Release 4: полный справочник. Осборн Макгроу-Хилл. ISBN  978-0-07-881653-6.CS1 maint: ref = harv (связь)
  • Фриш, Элин (2002). Основное системное администрирование. Краткое руководство (3-е изд.). O'Reilly Media, Inc. ISBN  978-0-596-00343-2.CS1 maint: ref = harv (связь)
  • Кумар, Судхир (2004). Энциклопедия операционной системы. Публикации Anmol PVT. LTD. ISBN  978-81-261-1792-5.CS1 maint: ref = harv (связь)
  • Раймонд, Эрик С. (2004). Искусство программирования под Unix. Серия профессиональных вычислений Аддисон-Уэсли. Эддисон-Уэсли. ISBN  978-0-13-142901-7.CS1 maint: ref = harv (связь)
  • Винзор, Дженис (2001). Руководство системного администратора Solaris 8 Advanced (3-е изд.). Prentice Hall PTR. ISBN  978-0-13-027703-9.CS1 maint: ref = harv (связь)

дальнейшее чтение

  • Стрэнг, Джон; Муи, Линда; О'Рейли, Тим (1991). Termcap и terminfo. Справочник по скорлупе (3-е изд.). O'Reilly Media, Inc. ISBN  978-0-937175-22-4.CS1 maint: ref = harv (связь)