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

undefined

Эмулятор терминала (исп. 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.

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

undefined

Немногие термины вычислительной техники были настолько изменчивы, как «интерпретатор команд» (например, «консоль», «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, а функциональные различия минимальны.

Примечания

Ссылки

Категории