Какова точная разница между терминалом, оболочкой, tty и консолью?

1236

Я думаю, что эти термины почти относятся к одному и тому же, когда используются свободно:

  • Терминал
  • ракушка
  • TTY
  • приставка

К чему конкретно относится каждый из этих терминов?

Lazer
источник
28
Я хотел бы добавить 'командную строку' к этому :-)
teeks99
1
Командная строка - это просто язык, используемый для отправки команд интерпретатору командной строки, работающему в оболочке, из терминала / эмулятора терминала.
Марти Фрид
1
Телетайп (TTY) был первым введен в эксплуатацию и выставлены на механический институт в Нью - Йорке в 1844. en.wikipedia.org/wiki/Teleprinter
Serge Stroobandt
Еще две полезные ссылки - feyrer.de/NetBSD/ttys.html и quora.com/…
Nishant

Ответы:

1198

Терминал находится на конце электрического провода, оболочка - дом черепахи, tty - странное сокращение, а консоль - своего рода шкаф.

Ну, вообще говоря, этимологически.

В терминологии Unix краткий ответ таков:

  • терминал = tty = среда ввода / вывода текста
  • консоль = физический терминал
  • shell = интерпретатор командной строки

Консоль, терминал и tty тесно связаны. Первоначально, они имели в виду оборудование, с помощью которого вы могли взаимодействовать с компьютером: в первые дни существования Unix это означало устройство в стиле телепринтера, напоминающее пишущую машинку, иногда называемое телетайпом, или сокращенно «tty». Название «терминал» пришло с электронной точки зрения, а название «консоль» с точки зрения мебели. Очень рано в истории Unix электронные клавиатуры и дисплеи стали нормой для терминалов.

В терминологии Unix tty - это особый тип файла устройства, который реализует ряд дополнительных команд ( ioctls ) помимо чтения и записи. В своем наиболее распространенном значении терминал является синонимом tty. Некоторые ttys предоставляются ядром от имени аппаратного устройства, например, ввод с клавиатуры и вывод на экран текстового режима или ввод и вывод по последовательной линии. Другие ttys, иногда называемые псевдо-ttys , предоставляются (через тонкий слой ядра) программами, называемыми эмуляторами терминала , такими как Xterm (работает в системе X Window ), Screen(который обеспечивает уровень изоляции между программой и другим терминалом), Ssh (который соединяет терминал на одном компьютере с программами на другом компьютере), Expect (для сценариев взаимодействия терминала) и т. д.

Слово «терминал» также может иметь более традиционное значение устройства, через которое оно взаимодействует с компьютером, обычно с клавиатурой и дисплеем. Например, X-терминал - это своего рода тонкий клиент , специализированный компьютер, единственной целью которого является управление клавиатурой, дисплеем, мышью и, иногда, другими периферийными устройствами взаимодействия с человеком, при этом реальные приложения работают на другом, более мощном компьютере.

Консоль , как правило , терминал в физическом смысле , что какое - то определение основного терминал подключен непосредственно к машине. Консоль представляется операционной системе как (реализованная в ядре) tty. В некоторых системах, таких как Linux и FreeBSD, консоль выглядит как несколько ttys (специальные комбинации клавиш переключают эти ttys); просто чтобы запутать дело, имя, данное каждому конкретному tty, может быть «консоль», «виртуальная консоль», «виртуальный терминал» и другие варианты.

См. Также Почему виртуальный терминал «виртуальный», и что / почему / где «настоящий» терминал? ,


Оболочка является основным интерфейсом , который пользователи видят , когда они войти, чья основная цель состоит в том, чтобы запускать другие программы. (Я не знаю, является ли первоначальная метафора тем, что оболочка является домашней средой для пользователя, или что оболочка - это то, в чем работают другие программы.)

В кругах Unix оболочка специализировалась на командной оболочке , сосредоточенной вокруг ввода имени приложения, которое нужно запустить, затем имен файлов или других объектов, с которыми должно работать приложение, и нажатия клавиши Enter. Другие типы окружений не используют слово «оболочка»; например, оконные системы включают « оконные менеджеры » и « окружение рабочего стола », а не «оболочку».

Есть много разных оболочек Unix. Популярные оболочки для интерактивного использования включают Bash (по умолчанию в большинстве установок Linux), zsh (что подчеркивает мощь и настраиваемость) и fish (что подчеркивает простоту).

Оболочки командной строки включают конструкции управления потоком для объединения команд. Помимо ввода команд в интерактивном режиме, пользователи могут писать сценарии. Наиболее распространенные оболочки имеют общий синтаксис, основанный на Bourne_shell . При обсуждении « программирования оболочки », оболочка почти всегда подразумевается как оболочка в стиле Борна. Некоторые оболочки, которые часто используются для написания сценариев, но не имеют расширенных интерактивных функций, включают оболочку Korn (ksh) и множество вариантов золы . Практически в любой Unix-подобной системе установлена ​​оболочка в стиле Борна, как /bin/shправило, ash, ksh или bash.

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


Разделение труда между терминалом и оболочкой не совсем очевидно. Вот их основные задачи.

  • Ввод: терминал преобразует ключи в последовательности управления (например, Left\e[D). Оболочка преобразует управляющие последовательности в команды (например, \e[Dbackward-char).
  • Редактирование строк, история ввода и завершение обеспечиваются оболочкой.
    • Терминал может вместо этого предоставлять собственное редактирование строки, историю и завершение и отправлять строку в оболочку только тогда, когда он готов к выполнению. Единственный общий терминал, который работает таким образом, находится M-x shellв Emacs.
  • Вывод: оболочка выдает такие команды, как «отображение foo», «переключение цвета переднего плана на зеленый», «перемещение курсора на следующую строку» и т. Д. Терминал действует в соответствии с этими инструкциями.
  • Подсказка - это просто концепция оболочки.
  • Оболочка никогда не видит вывод команд, которые она выполняет (если не перенаправлена). Выходная история (прокрутка) является чисто терминальной концепцией.
  • Копирование-вставка между приложениями обеспечивается терминалом (обычно с помощью мыши или последовательности клавиш, таких как Ctrl+ Shift+ Vили Shift+ Insert). Оболочка также может иметь свой собственный внутренний механизм копирования-вставки (например, Meta+ Wи Ctrl+ Y).
  • Управление заданиями (запуск программ в фоновом режиме и управление ими) в основном выполняется оболочкой. Тем не менее, это терминал, который обрабатывает комбинации клавиш, такие как Ctrl+, Cчтобы убить задание переднего плана и Ctrl+, Zчтобы приостановить его.
жилль
источник
50
Единственное замечание: я бы сказал, что оба типа ttys «предоставляются» ядром. Различие, которое я хотел бы подчеркнуть, состоит в том, что аппаратные ttys (например, последовательные линии и встроенная консоль в текстовом режиме) имеют один конец, подключенный к оборудованию, и один конец, подключенный к программному обеспечению (например, программы входа и / или оболочки), в то время как псевдо-ttys имеют оба конца подключены к программному обеспечению (например, эмулятор терминала на одном конце и оболочка на другом).
Крис Джонсен
12
@phunehehe: Правильно, это другое значение «оболочки», обычно используемое при проектировании операционной системы: оболочка является внешней частью ядра. Это не терминология Unix: ядра Unix не имеют компонента, который можно было бы назвать оболочкой.
Жиль
24
Это образ в моей голове метафоры оболочки.
rndrük
12
Существует также другое значение «консоли» в Linux. Консоль (есть только одна) находится там, где printkимеет достаточный приоритет (например, паника ядра). Это устанавливается передачей console=DEVICE,...в командной строке ядра (например, console=ttyS0,115200для первого последовательного порта со скоростью 115 200 бит / с). Обычно по умолчанию используется виртуальный терминал, но это можно изменить при компиляции ядра.
Дероберт
19
«… Терминал… обрабатывает комбинации клавиш, такие как Ctrl + C, чтобы убить задание переднего плана, и Ctrl + Z, чтобы приостановить его». Не совсем: терминал все еще просто отправляет управляющие символы, это устройство tty решает, как их обрабатывать, и его можно настраивать , По умолчанию устройство tty преобразует управляющие символы в сигналы, посылаемые оболочке (и другим процессам).
Крис Пейдж
194

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

Файл, представляющий терминал, традиционно называется tty- файлом. Если вы загляните в каталог «/ dev» системы UNIX, вы найдете множество tty- файлов, подключенных к виртуальным консолям (например, tty1 в Linux), виртуальным терминалам (например, pts / 0) или физически подключенному оборудованию (например, ttyS0 является физическим последовательным терминалом, если таковой имеется, подключенным к первому последовательному порту хоста).

Консоль должна быть часть оборудования физически подключен (или часть) хозяина. Он играет особую роль в системе: он является основным пунктом доступа к системе для технического обслуживания, и некоторые специальные операции могут выполняться только с консоли (например, см. single user mode). Терминал может быть, и обычно, удаленной часть аппаратных средств.

Наконец, что не менее важно, оболочка - это специальная программа, которая взаимодействует с пользователем через управляющий tty и предлагает пользователю способ запуска других программ (например, bash, csh, tcsh).

Эмулятор терминала является программой , которая эмулирует физический терминал (например , Xterm, гном-терминал, MiniCom).

Поэтому, когда вы смотрите на «текстовое окно» в вашей системе Linux (под X11), вы видите: эмулятор терминала , подключенный к виртуальному терминалу , идентифицируемый tty- файлом, внутри которого запускается оболочка .

andcoz
источник
2
Любой настольный компьютер имеет системную консоль (в моем 2015 или 2010 году постер не имеет значения). Как было правильно сказано, это аппаратная часть. Но заявить, что «в настоящее время почти все… консоли представляют собой« виртуальные », почти противоречиво и явно нехорошо.
Incnis Mrsi
1
«Терминал или консоль - это аппаратное обеспечение, с помощью которого пользователь может взаимодействовать с хостом. В основном клавиатура в сочетании с текстовым экраном». удивительное объяснение своим конкретным аспектом
Webwoman
@andcoz - Что вы подразумеваете под «текстовым окном»? Разве эмулятор терминала не является виртуальным терминалом? Если я запускаю команду ttyв эмуляторе терминала, таком как KDE Konsole, вывод будет / dev / pts / 0.
мотивировано
1
@IncnisMrsi - Разве настольный компьютер не является консолью ? Если нет, то что вы имеете в виду под системной консолью?
мотивировано
2
@Motivation /dev/pts/0- это tty-файл, обработчик программного интерфейса, предоставляемого ядром. С помощью этого обработчика программа (например, оболочка) может взаимодействовать с терминалом (реальным или виртуальным). Эмулятор терминала - это программа, которая эмулирует терминал. Эмулятор просит ядро ​​создать обработчик, позволяющий программам взаимодействовать с самим собой (см. man openpty). Таким образом, информация поступает из терминала (эмулятора) в обработчик ядра tty, в программу (и наоборот). Программы и терминалы не общаются друг с другом напрямую, а только через tty-файл (обработчик).
andcoz
48

КРАТКОЕ объяснение:

Консоль - это терминал. Система имеет одну консоль и, возможно, несколько терминалов. Консоль обычно является основным интерфейсом для управления компьютером, например, когда он еще загружается.

Терминал - это сеанс, который может принимать и отправлять ввод и вывод для программ командной строки. Консоль является частным случаем этого.

TTY - это, по сути, псевдоустройство, называемое ресурсом ядра, которое используется процессами для доступа к определенному терминалу. TTY могут быть привязаны к оборудованию, такому как последовательный порт, или могут быть виртуальными, например, созданы, когда пользователь входит в сеть через сеть

Оболочка - это программа, которая используется для управления и запуска программ. Он часто используется в интерактивном режиме, через терминал. Существует несколько программ оболочки, Bash, пожалуй, наиболее часто используемая оболочка сегодня. Другие оболочки, в произвольном порядке, включают Bourne Shell, C-shell, Dash, Tsch, Ksh и все более популярную Zsh. Есть много других.

Когда у вас есть графический интерфейс, вы можете использовать терминальную программу, чтобы нарисовать красивую границу с изменяемым размером, добавить полосы прокрутки, отформатировать текст и т. Д. Для сеанса терминала. Часто они называются терминальными эмуляторами, а иногда они могут обрабатывать несколько сеансов через концепцию TAB. Эмулятор терминала часто запускает оболочку, чтобы вы могли интерактивно работать в командной строке.

Johan
источник
1
PTY это псевдо TTY. TTY может быть, но не виртуальным (псевдо) терминалом.
Лучано
35

TTY (т.е. T Эле TY pewriter) представляет собой специальное устройство , которое позволяет людям , которые глухие, слабослышащие, или речи слабослышащих пользоваться телефоном для связи, позволяя им набирать текстовые сообщения. TTY требуется на обоих концах разговора, чтобы общаться.
ИЛИ
TTY - это терминал, который используется для ввода текстового сообщения.


Скорлупа : внешняя защитная покровная часть семени, т.е. ядра.
ИЛИ
каркас или внешняя структура центральной или существенной части системы.
введите описание изображения здесь


Консоль означает клавиатуру и монитор физического прикрепления к компьютеру.

Premraj
источник
28

Уже есть два отличных ответа, но я бы хотел добавить информацию о фразе «виртуальный терминал» . Обычно это означает то, что обеспечивает внешний вид / функциональность терминала, т.е. е. в широком смысле. Но в первые дни Linux (1994–95) использовался некоторыми разработчиками как синоним «виртуальной консоли» (несколько несвязанных пользовательских интерфейсов) . Это использование сохраняется в документации; два разных термина использовались (и используются) для обозначения tty1, tty2… штуковины. В настоящее время (начиная с 1996 года) «виртуальный терминал» может также относиться к эмуляторам терминала на основе .

Linux vt(драйвер системной консоли в текстовом режиме) был первым компонентом ядра. Первоначально он использовался для подключения к мэйнфреймам, и в этом смысле это «виртуальный терминал», отсюда и название. Код, управляющий виртуальными консолями, также находится в немvt.c . Инженеры ядра Linux последовательно используют слово «консоли» для обозначения tty1, tty2… и используют для них префикс «vc_». Например, есть vc_allocateфункция. С другой стороны, разработчики таких инструментов пользовательского пространства, как kbdи console-tools«виртуальная консоль» (VC) и «виртуальный терминал» (VT), взаимозаменяемы. And связался с Андриесом Е. Брауероми попросил его уточнить терминологию, использовавшуюся ранними разработчиками (1994–95). Андриес любезно предоставил некоторые ответы. Он утверждает, что VT и VC являются синонимами и «неделимыми» сокращениями. -> В общем, виртуальная консоль - это виртуальный терминал, но обратное неверно. Те «виртуальные терминалы», которые не являются виртуальными консолями, действительно являются псевдотерминалами (как утверждает Андриес, это не VT ). В отличие от виртуальных консолей, где ядро ​​обеспечивает функциональность терминала для консольного приложения, псевдотерминалы используют «устройства» PTY для организации связи между консольными приложениями и программой создания терминалов, которая выполняется в пользовательском пространстве . Примерами являются эмуляторы терминала на основе X иsshd, который выделяет псевдотетию для каждого сеанса входа в систему. Псевдотти нельзя назвать «консолью» - это ошибка.

Incnis Mrsi
источник
14
  • Терминал = Интерфейс, который обеспечивает отображение для вывода и клавиатуры для ввода в сеансе оболочки.

  • Shell = интерпретатор, который выполняет команды, напечатанные в виде строки

  • Консоль: На самом деле мы используем два типа консоли

    • Физическая консоль = аппаратный дисплей и клавиатура, используемые для взаимодействия с системой

    • Виртуальная консоль = одна из нескольких логических консолей, каждая из которых может поддерживать независимый сеанс входа в систему.

  • tty (телетайп т.е. терминал). Терминал - это в основном просто устройство пользовательского интерфейса, которое использует текст для ввода и вывода.

Ракиб
источник
Что такое tty? - иначе твой ответ - единственный, который я прочитал
loxaxs
8

Вам нужно погрузиться в историю.

Были пишущие машинки с бумагой и клавиатурой. Их называли телетайпами (что означает «тип удаленно», так как «теле» означает «удаленный») или сокращенно ttys . В 70-х годах их устарели устройства с ЭЛТ-монитором, называемые стеклянными ттысами .

Любому компьютеру нужен какой-то способ сообщить о своем состоянии и ошибках (и, возможно, принять команды). Это делается через консоль, которая почти всегда подключена напрямую к компьютеру. Итак, для консоли есть два значения : то, что используется для сообщения о состоянии, и то, что связано напрямую.

UNIX - это интерактивная система: к ней могут подключиться несколько пользователей и запускать приложения. Первые компьютеры использовали для этого телетайпы ( tty ): каждому пользователю был подключен телетайп к машине с последовательным соединением. Такой телетайп называется терминалом . UNIX также получил специальную подсистему для обработки «пользователей, сидящих за терминалами», которая также называется tty, потому что первые терминалы были телетайпами. Каждый процесс может быть связан с tty в Unix. Это означает, что где-то рядом с терминалом сидит пользователь. Смотрите http://www.linusakesson.net/programming/tty/ для получения дополнительной информации.

Пользователям нужен какой-то способ сообщить ядру о запуске приложения. для этого используется shell (sh, bash, csh, ksh и т. д.). shell работает на tty , принимает команды от пользователя и просит ядро ​​запустить какое-то приложение.

Но терминалы не всегда физически связаны с машиной. Может быть какое-то приложение, которое «эмулирует» терминал, принимающий нажатия клавиш от пользователя и отправляющий их куда-то (xterm и ssh являются хорошими примерами). Для этого в Kernel есть API, называемый псевдо-терминал . Таким образом, ваш tty может быть действительно подключен к какому-либо приложению, а не к реальному терминалу. Xterm использует X11 для отображения текста, а ssh использует для этого сетевое соединение.

У IBM PC есть клавиатура и видеокарта (их также иногда называют консольными ). Linux может делать с ним разные вещи:

  • Используйте его как «движок для сообщения об ошибках и статусе»: консоль Linux. Если вы передадите console = / dev / ttyS0 ядру, оно будет использовать в качестве консоли что-то, подключенное к COM1, а если нет, то будет использовать консоль ПК.
  • Используйте его для эмуляции терминала, так называемого виртуального терминала (vty).

Он также может прекратить эмуляцию терминала на консоли и передать его в какое-либо приложение. Приложение может переключать свой режим видео и использовать его исключительно (X11 или svgalib могут сделать это).

Итак, вот современные значения:

  • терминал: что-то с реальным пользователем, сидящим за ним. Может быть физическим терминалом (редко) или псевдо-терминалом (xterm, ssh) или виртуальным терминалом (vty в Linux)
  • shell: приложение (bash, tcsh и т. д.), которое помогает пользователю взаимодействовать с системой.
  • tty: терминал или подсистема ядра для поддержки терминалов.
  • консоль: то, где сообщается о состоянии и ошибках ( /dev/console) или физическая клавиатура и видеодисплей, подключенные к компьютеру.
user996142
источник
7

Вот краткий ответ -

Ядро - самая внутренняя часть любой современной операционной системы, которая напрямую взаимодействует с реальным оборудованием.

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

Терминал - в эпоху более ранних вычислений компьютеры (известные как мейнфреймы) были гигантскими. Таким образом, было легко иметь один процессор и подключать его из разных мест. Терминал - это фактическое оборудование с клавиатурой и устройствами вывода, подключенными к мэйнфрейму.

Консоль - Специальный тип терминала, который напрямую подключен к мэйнфрейму для администрирования ОС.

tty - TeleTypewriter, используемый для отправки и получения данных на мэйнфрейм и с него. Использовался до того, как стали доступны видеотерминалы. Но условно это все еще назвали как tty. Даже командирstty

Подробный подробный ответ здесь - Терминал, Консоль, Оболочка, Ядро, Команды - Различные части компьютера

Палаш Канти Кунду
источник
спасибо, но в основном, если терминал существует, почему он все еще существует в системе ubuntu для персональных компьютеров, доступной с помощью alt + f-1/6, пожалуйста, я не могу понять их полезность выше того факта, что к ним можно получить доступ без использования графической системы если я хорошо поняла
Webwoman
1
@Webwoman - моя система настроена так, чтобы разрешать доступ к rootучетной записи только через sudoили через консольный вход в систему. Консоли часто имеют особое привилегированное положение, поскольку тот, кто имеет к ним доступ, обязательно имеет физический доступ к компьютеру, с которым общается. Они также являются методом доступа последней инстанции. Если ОС находится в частично неисправном состоянии (например, неисправен драйвер Ethernet), вы все равно можете получить доступ к консоли. Это единственное интерфейсное устройство, которое должно быть доступно ВСЕГДА, независимо от того, в каком состоянии находится система.
Всезнающий
@ Огромное спасибо за ваш ответ "Консоли часто имеют особые привилегии места, поскольку тот, кто имеет к ним доступ, обязательно имеет физический доступ к компьютеру, с которым они общаются" Вы имели в виду, что у TTY часто есть особые привилегии места?
веб-женщина
@Webwoman - Нет, консоль. TTY часто напрямую не подключен к компьютеру. И консоль часто не TTY в традиционном смысле. Когда в конце 80-х я отправился в университет MN, там была специализированная сеть по всему университетскому городку, в которой я не использовал Интернет-протокол (он же IP) для подключения случайных TTY к случайным компьютерам. В мэйнфреймах IBM происходит то же самое, и это было одной из главных причин, по которым IBM создала SNA. И обычный ПК, даже когда он показывает только текст, во многом очень отличается от TTY, поэтому консоль ПК не совсем TTY.
Всевышний
@Webwoman - Определяющей особенностью консоли является то, что она имеет прямое соединение с оборудованием, на котором установлена ​​операционная система. Эта идея несколько размыта в современных «виртуальных машинах», но это основная идея.
Всевышний
6

Помимо принятого ответа и демистифицированной статьи TTY , мне очень понравилось читать эти две статьи:

Этот основан на NetBSD.

В каменные века Unix компьютерные системы состояли из мэйнфрейма, большого блока мигающих огней, в котором были память, запоминающее устройство и вычислительные устройства, и которые запускали процессы, запускаемые пользователями или операторами. Поскольку оборудование было очень дорогим, системы использовались как настоящие многопользовательские системы, и многие люди одновременно взаимодействовали с системой. В отличие от современных рабочих станций Unix, у него обычно не было стационарного монитора и клавиатуры. Вместо этого, выдача команд на аппарат и извлечение выходных данных выполнялась по последовательным линиям, сначала с использованием телетайперов, а позже с терминалами CRT (электронно-лучевая трубка). Teletypers - вот откуда берутся «ttys» в Unix - это электронные пишущие машинки, которые посылают ключи, нажатые по последовательной линии, на хост,

Этот основан на Linux.

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

Nishant
источник
1

Позвольте мне в этом разобраться ... Я буду использовать Unix и Linux более или менее как синонимы. Если я имею в виду нечто историческое, которое предшествовало существованию Linux, я обычно буду писать «Unix», и если я говорю о чем-то более новом, или о чем-то специфическом для разновидности Linux Unix, я обычно буду писать «Linux» ».

Ракушка

Единственная вещь в вашем списке, которая является дискретным понятием, которое не пересекается с другими, это «оболочка». Оболочка - это программа, целью которой является общение с пользователем и выполнение операций операционной системы от его имени.

В наиболее распространенных оболочках используется метод, называемый «командной строкой», который заключается в отправке пользователю какого-либо запроса, ожидании ввода пользователем текстовой команды и выполнении этой команды. Но существуют основанные на меню оболочки и даже графические оболочки (такие как Windows File Explorer), хотя ни один уважающий себя человек из Unix никогда бы не назвал такую ​​вещь «оболочкой».

В Unix, если кто-то называет что-то «оболочкой», он почти наверняка подразумевает некоторую форму интерфейса командной строки, как я только что описал. И в мире Unix очень странно называть что-либо «оболочкой», если она не общается с пользователем, используя модель tty, которую я опишу далее.

TTY

Это сбивает с толку, потому что это может относиться к нескольким видам вещей.

В Linux есть устройство под названием «tty». Это абстрактное устройство, которое, как ожидается, будет использоваться для двунаправленной связи с чем-то, что либо является пользователем, либо каким-либо образом принимает информацию от пользователя. Иногда это абстрактное устройство может напрямую соответствовать какому-то физическому устройству. Иногда это может быть программа, которая представляет кому-то окно, в котором появляется сообщение и в который пользователь может ввести текст.

Но причина, по которой существует это абстрактное устройство, и причина, по которой его называют «tty», заключается в том, что «tty» означает «телетайп», то есть реальное физическое устройство с принтером, который печатался на бумаге в сочетании с клавиатурой. Модель, которую абстрактное устройство 'tty' представляет программам, которые его используют, в основном заключается в том, что на другом конце есть телетайп. Вы отправляете ему символы, и эти символы появляются на телетайпе. Когда вы читаете из него символы, эти символы представляют собой клавиши, которые были набраны на клавиатуре.

Старые tys на бумажном принтере были быстро вытеснены с ttys видео. На тех, конечно, нет рулона бумаги. И, собственно, можно перезаписать любой символ на экране. Но вместо того, чтобы представлять какой-то абстрактный «экранный» интерфейс для программ, от программ ожидается, что они будут отправлять специальные потоки символов, называемые escape-последовательностями, которые выполняют различные задачи. Обычно существует абстрактная вещь, называемая «курсор», которую можно перемещать по экрану, и любой отправленный символ заменит все, что находится у курсора, а курсор переместится еще на один символ. Часто вы можете изменить цвет персонажа, который также будет напечатан с escape-последовательностями.

Есть «стеклянные тты», которые не следуют этой модели и, следовательно, плохо обрабатываются в мире Unix. Семейство видеотерминалов IBM 3270 попадает в эту категорию.

То, что люди в Linux / Unix обычно называют «окном оболочки», является эмуляцией стекла с использованием графического интерфейса пользователя. Внутри программы, работающие внутри окна оболочки, общаются с виртуальным tty-устройством, которое иногда называют псевдо-tty или псевдо-терминалом (aka pty).

Терминал

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

Приставка

Консоль - это особый вид терминала, который, как правило, предполагается подключать каким-либо прямым безопасным способом к оборудованию, на котором работает операционная система.

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

Существуют способы использовать Linux через так называемую «последовательную консоль», которая представляет собой консоль, подключенную к компьютеру через последовательный порт, такой как порт USB (или, на некоторых очень маленьких и / или очень старых компьютерах, порт RS-232). в некотором роде) и следует довольно старой модели старого телетайпа.

Опять же, идея заключается в том, что эта консоль напрямую подключена к компьютеру, а не через какую-то сеть, которая может позволить любому подключаться.

всевозможный
источник