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

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

    терминал литий> оболочки литий>
  • терминал
  • консоль

Что именно относится к каждому из этих терминов?

1053 голоса | спросил Lazer 16 22010vEurope/Moscow11bEurope/MoscowTue, 16 Nov 2010 23:06:02 +0300 2010, 23:06:02

8 ответов


1051

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

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

В терминологии unix короткий ответ заключается в том, что

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

Консоль, терминал и tty тесно связаны. Первоначально они означали часть оборудования, через которое вы могли взаимодействовать с компьютером: в первые дни Unix это означало файла устройства , который реализует ряд дополнительных команд ( ioctls ) за пределами чтения и записи. По своему обычному значению терминал является синонимом tty. Некоторые ящики предоставляются ядром от имени аппаратного устройства, например, с ввода, поступающего с клавиатуры, и выхода, идущего на экран текстового режима, или с вводом и выводом, передаваемым по последовательной линии. Другие tty, иногда называемые псевдо-ttys , предоставляются (через тонкий слой ядра) с помощью программ под названием эмуляторы терминалов , например Xterm ( работает в X Window System ), Экран (который обеспечивает слой изоляции между программой и другим терминалом), Ожидать (для взаимодействия с терминалами сценариев) и т. Д.

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

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

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


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

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

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

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

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


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

  • Вход: терминал преобразует ключи в управляющие последовательности (например, Влево â † '\e[D). Оболочка преобразует управляющие последовательности в команды (например, \e[D â † 'backward-char).
  • Линейное редактирование, история ввода и завершение предоставляются оболочкой.
    • Терминал может предоставить свое собственное редактирование линии, историю и завершение вместо этого, и только отправлять строку в оболочку, когда она готова к выполнению. Единственным общим терминалом, который работает таким образом, является M-x shell в Emacs.
  • Вывод: оболочка генерирует такие команды, как «disisplay foo», «переключение цвета переднего плана на зеленый», «переместите курсор на следующую строку» и т. д. Терминал действует в соответствии с этими инструкциями.
  • Приглашение представляет собой концепцию оболочки.
  • В оболочке никогда не отображается результат выполнения команд (если не перенаправлен). История вывода (прокрутка) является чисто терминальной концепцией.
  • Копирование-вставка между приложениями обеспечивается терминалом (обычно с помощью мыши или последовательностей клавиш, таких как Ctrl + Shift + V или Shift + Вставить ). Оболочка может также иметь свой собственный механизм внутренней копии (например, Meta ​​kbd> + W и Ctrl + Y ).
  • Управление заданиями (запуск программ в фоновом режиме и управление ими) в основном выполняется оболочкой. Тем не менее, это терминал, который обрабатывает комбинации клавиш, такие как Ctrl + C , чтобы убить задание переднего плана и Ctrl + Z чтобы приостановить его.
ответил Gilles 17 32010vEurope/Moscow11bEurope/MoscowWed, 17 Nov 2010 01:31:46 +0300 2010, 01:31:46
173

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

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

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

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

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

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

ответил andcoz 17 32010vEurope/Moscow11bEurope/MoscowWed, 17 Nov 2010 00:53:35 +0300 2010, 00:53:35
39

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

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

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

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

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

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

ответил Johan 19 MarpmTue, 19 Mar 2013 13:22:11 +04002013-03-19T13:22:11+04:0001 2013, 13:22:11
24

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


Shell : внешняя защитная покрывающая часть семенного ядра, т. е. ядро.
ИЛИ
рамки или внешнюю структуру для центральной или существенной части системы.
 введите описание изображения здесь>> </a> </p>

<hr>
<p> <strong> Консоль </strong> означает физическую привязку клавиатуры и монитора к компьютеру. </p></body></html>

ответил Premraj 20 SunEurope/Moscow2015-12-20T04:44:44+03:00Europe/Moscow12bEurope/MoscowSun, 20 Dec 2015 04:44:44 +0300 2015, 04:44:44
21

Уже есть два отличных ответа, но Ī̲ хотел бы добавить информацию о фразе â € œvirtual terminalâ € . Как правило, это означает что-то, что обеспечивает внешний вид /функциональность терминала i.â € ¯e. a в широком смысле , Но в первые дни Linux (1994 - 95) использовалось синонимом с эмуляторы терминалов.

Linux vt (драйвер системной консоли текстового режима) был первой частью его ядра. Первоначально он использовался для подключения к мэйнфреймам, и в этом смысле это «виртуальный терминал», отсюда и название. Код, управляющий виртуальными консолями находится в vt.c . Инженеры ядра Linux последовательно используют слово «консоль» для обозначения tty1, tty2â € | и префикса «vc_» для них. Например, существует функция vc_allocate. С другой стороны, разработчики таких инструментов пользовательского пространства, как kbd и console-tools, использовали «виртуальную консоль» (VC) и «виртуальный терминал» (VT) взаимозаменяемые. Ī̲ связался Andriesâ € ¯E. Brouwer и попросил его уточнить терминологию, используемую ранними разработчиками (1994-1995). Андрис любезно предоставил некоторые ответы. Он утверждает, что VT и VC являются синонимичными и «неделимыми» аббревиатурами. - > В общем, виртуальная консоль - это виртуальный терминал, но обратный isnâ € ™ т истины. Эти «виртуальные терминалы», которые не являются виртуальными консолями, действительно являются псевдотерминами (как утверждает Андриес, эти не являются VT ). В отличие от виртуальных консолей, где ядро ​​предоставляет терминальные функции для консольного приложения, псевдотермины используют PTY-устройства для организации связи между консольными приложениями и программой создания терминала, которая работает в пользовательском пространстве . Примерами являются эмуляторы терминалов на основе X и sshd, которые выделяют псевдометрию для каждого сеанса входа в систему. Псевдота не может быть названа «консолью» - это ошибка.

ответил Incnis Mrsi 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 07 Sep 2015 16:14:26 +0300 2015, 16:14:26
7
  • Terminal = интерфейс, который обеспечивает отображение вывода и клавиатуру для ввода в сеанс оболочки.

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

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

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

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

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

ответил Rakib 12 AMpWed, 12 Apr 2017 11:23:33 +030023Wednesday 2017, 11:23:33
3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ответил Palash Kanti Kundu 7 J000000Friday17 2017, 19:47:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132