Эмулятор терминала

Эмулятор терминала (исп. emulador de terminal) или эмулятор консоли — это программное обеспечение, имитирующее работу компьютерного терминала на любом устройстве отображения. Обычно для запуска эмулятора терминала используется сочетание клавиш Ctrl + Alt + T. Эмулятор терминала, работающий в рамках графического интерфейса пользователя, часто называют «окном терминала».

Эмуляторы терминала предоставляют возможности управления процессами, перенаправления ввода-вывода, просмотра и чтения файлов, ограничения доступа, коммуникаций и имеют язык команд для записи пакетных инструкций или скриптов. Одним из наиболее известных командных интерпретаторов является Bourne Shell (англ. англ. Bourne Shell), который использовался в первых версиях операционной системы Unix и фактически стал отраслевым стандартом[1].

Когда пользователь вводит команды в эмуляторе, интерпретатор командной строки разбирает последовательность введённых символов и, если синтаксис корректен, выполняет команду, обращаясь для этого к функциям операционной системы либо программы, которая эмулируется (например, к FTP-клиенту или к системе управления базами данных). Ответ пользователю отображается на экране; этот режим работы называется интерактивным, поскольку процесс ввода-вывода строится как последовательный обмен между человеком и компьютером.

История

С самого начала существования компьютеров они оснащались малыми текстовыми терминалами для взаимодействия с пользователями. Такой терминал состоит только из клавиатуры и экрана, способного отображать текст. Терминалы подключались к компьютеру через последовательный интерфейс (по сути, обычный кабель). Один компьютер мог одновременно обслуживать несколько подключённых терминалов.

С появлением мини-компьютеров одной и той же персоне часто приходилось держать на рабочем столе сразу несколько терминалов — один на каждый компьютер. Поскольку эти машины уже поддерживали сетевое соединение, назрела потребность управлять несколькими системами с одного терминала. Для этого был написан специальный эмулятор терминала — программа, позволявшая одному компьютеру имитировать терминал другого — так появились первые эмуляторы терминала для Unix.

Появление персональных компьютеров на предприятиях сделало эмулятор терминала ещё более востребованным. Теперь сотрудник имел на рабочем столе и компьютер, и терминал, что было неудобно и для самого пользователя, и для организации, поскольку приходилось содержать два отдельных устройства, сеть и всю инфраструктуру последовательных соединений. Использование эмулятора терминала позволяло отказаться от физического терминала и сопутствующих кабелей, одновременно снизив расходы: лицензия эмулятора значительно дешевле аппаратного терминала.

В настоящее время эмуляторы терминала для персональных компьютеров продолжают применяться в организациях с централизованными системами (например, в банках или госучреждениях), а также присутствуют практически во всех современных операционных системах, особенно в GNU/Linux, где продвинутые пользователи активно используют эмуляторы терминала для административных нужд.

Современным развитием эмуляторов терминала стали системы удалённого рабочего стола.

Типы

Все эмуляторы терминала сравнительно просты: они лишь передают и принимают текстовые символы по сети. Отправляемые символы соответствуют нажатиям клавиш, а принимаемые отображаются на экране. Главное отличие между эмуляторами — в том, какую именно физическую модель терминала они имитируют. Несмотря на большое разнообразие (как среди физических, так и среди программных терминалов), большинство эмулируемых моделей производны от двух базовых типов:

  • Серия VT100. Это терминалы, выпускаемые компанией DEC и изначально предназначенные для работы с компьютерами семейства VAX, а затем и другими. Особенно популярен вариант VT320.
  • Серия 3270. Терминалы производства IBM для своих мейнфреймов. Они более сложные по сравнению с VT100, оснащены курсором и полями для ввода, которые пользователь может заполнить до отправки на сервер. Введённая на экране информация пересылается целиком после нажатия клавиши «Enter», а не по отдельности каждое нажатие клавиши.

Терминалы различаются используемым набором символов, управляющими кодами (например, команда очистки экрана) и сопоставлением клавиш с кодами символов.

Примеры эмуляторов терминала

Классическим эмулятором терминала считается Telnet (англ. Telnet) — стандартное приложение стека TCP/IP. Однако Telnet реализует наиболее общий, простой вид эмуляции.

В Unix-системах эмулятор терминала по умолчанию — Term и его графический аналог Xterm, который, помимо прочего, может отображать цветной текст по определённым управляющим кодам.

Для персональных компьютеров выделяются эмуляторы PuTTY и SSH. Однако они не поддерживают терминалы серии 3270. Среди коммерческих проприетарных решений наиболее распространены Extra! и Reflection от компании AttachmateWRQ.

С развитием веб-технологий некоторые компании (в частности, Jacada и AttachmateWRQ) продвигают новое поколение эмуляторов, работающих прямо в веб-браузерах (через апплет или посредством промежуточного сервера — веб-приложения). Кроме того, AttachmateWRQ предлагает систему VERASTREAM для интеграции веб-приложений, позволяющую «омолаживать» наследные хост-программы и придавать им современный веб-интерфейс.

Категории командных оболочек

Командные оболочки делятся на четыре категории: типа Bourne, типа C shell, нетрадиционные и исторические.

Совместимые с Bourne shell

  • Bourne shell (sh) — написана Стивеном Борном (англ. Stephen Bourne) во время работы в Bell Labs. Впервые распространена с UNIX Version 7 в 1978 году и впоследствии многократно модифицировалась.
  • Almquist shell (ash) — разработана как замена Bourne shell с BSD-лицензией. В FreeBSD, NetBSD (и их производных) используется как sh, соответствующий стандартам POSIX.
  • Bourne-Again shell (bash) — создана в рамках проекта GNU как расширенная версия Bourne shell, по умолчанию используется во многих дистрибутивах GNU/Linux.
  • Debian Almquist Shell (dash) — современная замена ash в Debian.
  • Korn shell (ksh) — разработана Дэвидом Г. Корном (англ. David G. Korn) в Bell Labs.
  • Z shell (zsh) — особо функциональная оболочка, сочетающая супермножество возможностей sh, ash, bash, csh, ksh и tcsh.

Совместимые с C shell

Прочие и экзотические

  • fish — дружелюбная и интерактивная оболочка, впервые выпущена в 2005 году.
  • mudsh[2],[3][4] — «интеллектуальная» оболочка в стиле видеоигр, работает как MUD.
  • zoidberg — модульная оболочка, полностью написанная и настраиваемая на Perl.
  • rc — оболочка по умолчанию для Plan 9 from Bell Labs и Unix Version 10, написана Томом Даффом (англ. Tom Duff). Существуют порты для Inferno и UNIX-подобных ОС.
  • es shell (es)[5], — совместимая с rc оболочка, разработанная в середине 1990-х гг.
  • scsh (Scheme Shell).

Конфигурационные файлы оболочек

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

Файл sh ksh csh tcsh bash zsh
/etc/.login нет нет login login нет нет
/etc/csh.cshrc нет нет нет да нет нет
/etc/csh.login нет нет нет login нет нет
~/.tcshrc нет нет нет да нет нет
~/.cshrc нет нет да да нет нет
~/.login нет нет login login нет нет
~/.logout нет нет login login нет нет
/etc/profile login login нет нет i.login нет
~/.profile login login нет нет login нет
~/.bash_profile нет нет нет нет login нет
~/.bash_login нет нет нет нет login нет
~/.bashrc нет нет нет нет n/login нет
/etc/zshenv нет нет нет нет нет да
/etc/zprofile нет нет нет нет нет login
/etc/zshrc нет нет нет нет нет int.
/etc/zlogin нет нет нет нет нет login
/etc/zlogout нет нет нет нет нет login
~/.zshenv нет нет нет нет нет да
~/.zprofile нет нет нет нет нет login
~/.zshrc нет нет нет нет нет int.
~/.zlogin нет нет нет нет нет login
~/.zlogout нет нет нет нет нет login

Обозначения:

  • «нет» — оболочка не читает этот файл.
  • «да» — файл всегда читается.
  • «login» — файл читается только если оболочка используется как оболочка входа (login shell).
  • «n/login» — файл читается, если оболочка не является оболочкой входа.
  • «int.» — файл читается, если оболочка интерактивная.
  • «i.login» — файл читается, если оболочка интерактивная, используемая для входа в систему.

Исторические

  • Thompson shell (sh) — первая оболочка Unix, написанная Кеном Томпсоном (англ. Ken Thompson) в Bell Labs. Поставлялась с Версиями 1—6 Unix (1971—1975). Для современных стандартов считается крайне примитивной и более не используется. Её части доступны в составе Ancient UNIX Systems.
  • PWB shell или Mashey shell (sh) — версия оболочки Томпсона, созданная Джоном Мэши (англ. John Mashey) и другими сотрудниками Bell Labs. Использовалась в Programmer’s Workbench UNIX с 1976 года.

Не-Unix оболочки

В среде операционных систем Microsoft Windows аналогичными программами выступают command.com или cmd.exe для систем семейства Windows NT, а также Windows PowerShell, представленный начиная с Windows Server 2008.

Номенклатура

Немногие термины вычислительной техники были настолько изменчивы, как «интерпретатор команд» (например, «консоль», «CLI», «TUI», «TTY», «терминал», «shell»).

Изначально под консолью понимался физический терминал (аппаратное устройство), но с исчезновением соответствующих аппаратов этот термин стал синонимом окна командной строки (CLI). В компьютерных играх термин «консоль» чаще используют для обозначения окна ввода команд.

Эмулятор терминала (или TTY) — программа, позволяющая имитировать такие старые терминалы для доступа к сервисам, до сих пор функционирующим в этом формате (например, через Telnet). Примеры — HyperTerminal, Xterm, PuTTY, SSH.

С появлением графических интерфейсов оконные системы предоставили свой режим эмуляции текстового режима для корректной работы программ, использующих TUI (например, Midnight Commander в Linux). Таким образом, оболочки Unix (в графической среде X Window System) и устаревшие программы DOSMS Windows) запускаются через эмулятор текстового режима. Более того, некоторые программы (например, Bash) также действуют как эмуляторы терминала. Поэтому понятия «эмулятор текста», «консоль» и «терминал» часто используются как синонимы.

В результате все три понятия часто смешивают, подразумевая под ними просто место, где доступна командная строка.

Пример: если подключить к ПК клавиатуру и монитор и загрузить GNU/Linux в текстовом режиме, большинство пользователей назовут происходящее «shell». При запуске графической среды (например, KDE) появится цветной рабочий стол и кнопки. Если открыть в этой среде окно xterm, его назовут «консолью». Если из этой консоли через SSH подключиться к удалённому компьютеру, говорят, что открыт терминал. Во всех случаях используется командная оболочка, например Bash, а функциональные различия минимальны.

Примечания

Ссылки