При расчете и телекоммуникаций, то возможности предоставления в терминале различные терминальные функции, выше и за пределами того , что доступно из чистого телетайп , принимающие системы (и программы , которые работают на них) могут использовать. Они (в основном) управляющие коды и escape-коды, которые могут быть отправлены на терминал или получены от него. Управляющие коды, отправляемые на терминал, выполняют различные функции, которые терминал CRT (и программные эмуляторы терминала) способен, а телетайп - нет; например, перемещение курсора терминала в положение на экране, очистка и прокрутка всего или части экрана, включение и выключение подключенных принтерных устройств, программирование программируемых функциональных клавиш, изменение цветов и атрибутов дисплея (например, обратное видео ) и настройка отображения строки заголовка. Коды эвакуации , полученные от терминала означают такие вещи, как функциональной клавиши , клавиши со стрелками , и другие специальные ключевые ( домашний ключ , конец ключ , помощь ключ , ключ PgUp , ключ PgDn , вставки ключа , удаления ключа и т.д.) нажатий клавиш. [1] [2]
Unix и POSIX: termcap, terminfo и др.
В Unix и других POSIX- совместимых системах, которые поддерживают интерфейс терминала POSIX , эти возможности закодированы в базах данных, которые настраиваются системным администратором и доступны из программ через библиотеку terminfo (которая заменяет старую библиотеку termcap ), которая, в свою очередь, встроенные библиотеки, такие как библиотеки curses и 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 ( « термин Инал информации ия») библиотека была разработана для систем System V. Он использует базу данных, хранящуюся в нескольких файлах в каталоге, которые могут быть разными (в разных Unix и POSIX-совместимых системах). / usr / lib / terminfo , / usr / share / terminfo или даже / usr / share / lib / 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 использует тип терминала, указанный в TERM
переменной среды , одной из управляющих переменных среды интерфейса терминала POSIX . Однако это можно изменить, чтобы заставить tput для поиска терминала другого типа в базе данных с параметром командной строки для команды. [1] Так, например, чтобы выполнить последовательность сброса, соответствующую типу терминала с именем «vt100» в базе данных (обычно терминал DEC VT100 ), независимо от типа терминала, указанного в переменных среды, выполните следующую команду:
tput -T vt100 сброс
Рекомендации
Что поддерживает что
- ^ а б в г Афзал 2008 , стр. 419.
- ^ a b c d e Frisch 2002 , стр. 770.
- ^ а б Гроб 1991 , стр. 115.
- ↑ Гроб 1991 , стр. 372.
- ^ а б Фриш 2002 , стр. 769.
- Перейти ↑ Kumar 2004 , p. 417.
- ^ а б Блюм 2008 , стр. 31.
- ^ а б Раймонд 2004 , стр. 144–145.
- Перейти ↑ Winsor 2001 , p. 244–245.
Используемые источники
- Афзал, Амир (2008). UNIX без ограничений: подход для начинающих (5-е изд.). Прентис Холл. ISBN 978-0-13-119449-6.
- Блюм, Ричард (2008). Командная строка Linux и Библия сценариев оболочки . Библейская серия. Джон Уайли и сыновья. ISBN 978-0-470-25128-7.
- Гроб, Стивен (1991). UNIX system V Release 4: полный справочник . Осборн МакГроу-Хилл. ISBN 978-0-07-881653-6.
- Фриш, Элин (2002). Необходимое системное администрирование . Краткое руководство (3-е изд.). ISBN O'Reilly Media, Inc. 978-0-596-00343-2.
- Кумар, Судхир (2004). Энциклопедия операционной системы . Публикации Anmol PVT. LTD. ISBN 978-81-261-1792-5.
- Раймонд, Эрик С. (2004). Искусство программирования под Unix . Серия профессиональных вычислений Аддисона-Уэсли. Эддисон-Уэсли. ISBN 978-0-13-142901-7.
- Винзор, Дженис (2001). Руководство системного администратора Solaris 8 Advanced (3-е изд.). Prentice Hall PTR. ISBN 978-0-13-027703-9.
дальнейшее чтение
- Стрэнг, Джон; Муи, Линда; О'Рейли, Тим (1991). Termcap и terminfo . Справочник по скорлупе (3-е изд.). ISBN O'Reilly Media, Inc. 978-0-937175-22-4.