it-swarm-ru.tech

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

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

  • терминал
  • Ракушка
  • tTY
  • приставка

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

1278
Lazer

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

  • Ввод: терминал преобразует ключи в последовательности управления (например, Left → \e[D). Оболочка преобразует управляющие последовательности в команды (например, \e[Dbackward-char).
  • Редактирование строк, история ввода и завершение обеспечиваются Shell.
    • Терминал может предоставить собственное редактирование строки, историю и завершение взамен, и отправлять строку в оболочку только тогда, когда он готов к выполнению. Единственный общий терминал, который работает таким образом, это M-x Shell в Emacs.
  • Вывод: оболочка выдает такие команды, как "display foo", "переключить цвет переднего плана на зеленый", "переместить курсор на следующую строку" и т.д. Терминал действует по этим инструкциям.
  • Подсказка - это просто концепция Shell.
  • Оболочка никогда не видит вывод команд, которые она выполняет (если не перенаправлена). Выходная история (прокрутка) является чисто терминальной концепцией.
  • Копирование-вставка между приложениями обеспечивается терминалом (обычно с помощью мыши или последовательности клавиш, таких как Ctrl+Shift+V или Shift+Insert). Shell также может иметь свой собственный внутренний механизм копирования-вставки (например, Meta+W а также Ctrl+Y).
  • Управление заданиями (запуск программ в фоновом режиме и управление ими) в основном выполняется Shell. Тем не менее, это терминал, который обрабатывает комбинации клавиш, такие как Ctrl+C чтобы убить работу на переднем плане и Ctrl+Z приостановить это.
1253
Gilles 'SO- stop being evil'

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

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

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

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

--- эмулятор терминала - это программа, которая эмулирует физический терминал (например, xterm, gnome-терминал, minicom).

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

199
andcoz

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

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

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

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

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

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

51
Johan

A [~ # ~] tty [~ # ~] (то есть [~ # ~] t [~ # ~] ele [~ # ~] ty [~ # ~] pewriter) - специальное устройство, которое позволяет людям глухие, слабослышащие или с нарушениями речи используют телефон для общения, позволяя им набирать текстовые сообщения. TTY требуется на обоих концах разговора, чтобы общаться.
ИЛИ
[~ # ~] tty [~ # ~] является терминалом который используется для ввода текстового сообщения.


Оболочка : внешняя защитная покрывающая часть семени, то есть ядро.
ИЛИ
структура или внешняя структура к центральной или существенной части системы.
enter image description here


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

36
Premraj

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

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

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

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

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

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

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

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

16
Rakib

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9
Palash Kanti Kundu

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

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

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

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

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

7
Nishant

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

Ракушка

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

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

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

TTY

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

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

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

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

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

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

Терминал

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

Приставка

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

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

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

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

5
Omnifarious