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

<p>я думаю, что эти термины почти относятся к одному и тому же, когда используются свободно:</p><ul> <li>терминал</li> <li>ракушка</li> <li>tty</li> <li>приставка</li> </ul><p>к чему конкретно относится каждый из этих терминов?</p>

<p>терминал находится на конце электрического провода, shell - дом черепахи, tty - странное сокращение, а консоль - своего рода шкаф.</p><p>ну, вообще говоря, этимологически.</p><p>в терминологии unix краткий ответ таков:</p><ul> <li>терминал = tty = среда ввода/вывода текста</li> <li>консоль = физический терминал</li> <li>shell = интерпретатор командной строки</li> </ul><hr><p>консоль, терминал и tty тесно связаны. первоначально они имели в виду оборудование, с помощью которого вы могли взаимодействовать с компьютером: в первые дни существования unix это означало устройство в стиле <a href="http://en.wikipedia.org/wiki/teleprinter">teleprinter</a> -, напоминающее пишущую машинку, иногда называемое телетайпом, или "tty". ”в сокращении. название "терминал" пришло с электронной точки зрения, а название "консоль" с точки зрения мебели. очень рано в истории unix электронные клавиатуры и дисплеи стали нормой для терминалов.</p><p>в терминологии unix a <strong> tty</strong> - это особый вид <a href="http://en.wikipedia.org/wiki/device\_file">файл устройства</a> , который реализует ряд дополнительных команд ( <a href="http://en.wikipedia.org/wiki/ioctl#terminals">ioctls</a> ) помимо чтения и записи. , в самом общем значении <strong> терминал</strong> является синонимом tty. некоторые ttys предоставляются ядром от имени аппаратного устройства, например, ввод с клавиатуры и вывод на экран текстового режима или ввод и вывод по последовательной линии. другие ttys, иногда называемые <strong> pseudo-ttys</strong>, предоставляются (через тонкий слой ядра) программами, называемыми <a href="http://en.wikipedia.org/wiki/terminal\_emulator"><strong> эмуляторы терминала</strong></a> , например as <a href="http://en.wikipedia.org/wiki/xterm">xterm</a> (работает в <a href="http://en.wikipedia.org/wiki/x\_window\_system">x window system</a> ), <a href="http://en.wikipedia.org/wiki/gnu\_screen">screen</a> (что обеспечивает уровень изоляции между программой и другим терминалом), - <a href="http://en.wikipedia.org/wiki/secure\_shell">ssh</a> (который соединяет терминал на одной машине с программами на другой машине), <a href="http://en.wikipedia.org/wiki/expect">expect</a> (для сценариев взаимодействия терминала) и т.д.</p><p>терминал word также может иметь более традиционное значение устройства, через которое он взаимодействует с компьютером, обычно с клавиатурой и дисплеем. например, x-терминал - это своего рода <a href="http://en.wikipedia.org/wiki/thin\_client">тонкий клиент</a> , компьютер специального назначения, единственной целью которого является управление клавиатурой, дисплеем, мышью и, иногда, другими периферийными устройствами взаимодействия с человеком, при этом реальные приложения работают на другом , более мощный компьютер.</p><p>a <strong> console</strong> - это, как правило, терминал в физическом смысле, который по определению является первичным терминалом, напрямую связанным с машиной. консоль представляется операционной системе как (реализованная в ядре) tty. в некоторых системах, таких как linux и freebsd, консоль выглядит как несколько ttys (специальные комбинации клавиш переключают эти ttys); просто чтобы запутать, имя, данное каждому конкретному tty, может быть "консоль", "виртуальная консоль", "виртуальный терминал" и другие варианты.</p><p>смотрите также <a href="https://askubuntu.com/q/14284/1059">почему виртуальный терминал "виртуальный", и что/почему/где "настоящий" терминал?</a> .</p><hr><p>a <a href="http://en.wikipedia.org/wiki/shell\_%28computing%29"><strong> shell</strong></a> - это основной интерфейс, который видят пользователи при входе в систему, основной целью которого является запуск других программ. (я не знаю, является ли первоначальная метафора тем, что shell является домашней средой для пользователя, или что shell - это то, в чем работают другие программы.)</p><p>в кругах unix <strong> shell</strong> специализировался как --- <a href="http://en.wikipedia.org/wiki/shell\_%28computing%29#text\_.28cli.29\_shells">командная строка shell</a> , сосредоточенный вокруг ввода имени приложения, которое нужно запустить, с последующими именами файлов. или другие объекты, на которые должно воздействовать приложение, и нажав клавишу enter. другие типы сред не используют слово "shell"; например, оконные системы включают " <a href="http://en.wikipedia.org/wiki/window\_manager">оконные менеджеры</a> " и " <a href="http://en.wikipedia.org/wiki/desktop\_environment">окружение рабочего стола</a> ", а не "shell".</p><p>есть много разных оболочек unix. популярные оболочки для интерактивного использования включают <a href="http://en.wikipedia.org/wiki/bash\_(unix\_shell)">bash</a> (по умолчанию в большинстве установок linux), <a href="http://en.wikipedia.org/wiki/zsh">zsh</a> (что подчеркивает мощь и настраиваемость) и <a href="http://en.wikipedia.org/wiki/friendly\_interactive\_shell">fish</a> (что подчеркивает простота).</p><p>оболочки командной строки включают конструкции управления потоком для объединения команд. в дополнение к вводу команд в интерактивной подсказке пользователи могут писать сценарии. наиболее распространенные оболочки имеют общий синтаксис, основанный на <a href="http://en.wikipedia.org/wiki/bourne\_shell">bourne\_shell</a> . при обсуждении "<strong> программирование оболочки</strong>", оболочка почти всегда подразумевается как оболочка в стиле борна. некоторые оболочки, которые часто используются для написания сценариев, но не имеют расширенных интерактивных функций, включают <a href="http://en.wikipedia.org/wiki/korn\_shell">korn shell (ksh)</a> и множество <a href="http://en.wikipedia.org/wiki/almquist\_shell">ash</a> вариантов. практически в любой unix-подобной системе оболочка в стиле борна установлена как <code>/bin/sh</code>, обычно пепел, кш или баш.</p><p>в системном администрировании unix пользователь <strong> shell</strong> - это программа, которая вызывается при входе в систему. обычные учетные записи пользователей имеют командную строку, но пользователи с ограниченным доступом могут иметь <a href="http://en.wikipedia.org/wiki/restricted\_shell">( оболочка с ограничением доступа</a> или какая-либо другая конкретная команда (например, для учетных записей, предназначенных только для передачи файлов).</p><hr><p>разделение труда между терминалом и shell не совсем очевидно. вот их основные задачи.</p><ul> <li>ввод: терминал преобразует ключи в последовательности управления (например, <kbd>left</kbd> → <code>\e[d</code>). оболочка преобразует управляющие последовательности в команды (например, <code>\e[d</code> → <code>backward-char</code>).</li> <li>редактирование строк, история ввода и завершение обеспечиваются shell. <ul> <li>терминал может предоставить собственное редактирование строки, историю и завершение взамен, и отправлять строку в оболочку только тогда, когда он готов к выполнению. единственный общий терминал, который работает таким образом, это <code>m-x shell</code> в emacs.</li> </ul> </li> <li>вывод: оболочка выдает такие команды, как "display <code>foo</code>", "переключить цвет переднего плана на зеленый", "переместить курсор на следующую строку" и т.д. терминал действует по этим инструкциям.</li> <li>подсказка - это просто концепция shell.</li> <li>оболочка никогда не видит вывод команд, которые она выполняет (если не перенаправлена). выходная история (прокрутка) является чисто терминальной концепцией.</li> <li>копирование-вставка между приложениями обеспечивается терминалом (обычно с помощью мыши или последовательности клавиш, таких как <kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>v</kbd> или <kbd>shift</kbd>+<kbd>insert</kbd>). shell также может иметь свой собственный внутренний механизм копирования-вставки (например, <kbd>meta</kbd>+<kbd>w</kbd> а также <kbd>ctrl</kbd>+<kbd>y</kbd>).</li> <li> <a href="http://en.wikipedia.org/wiki/job\_control">управление заданиями</a> (запуск программ в фоновом режиме и управление ими) в основном выполняется shell. тем не менее, это терминал, который обрабатывает комбинации клавиш, такие как <kbd>ctrl</kbd>+<kbd>c</kbd> чтобы убить работу на переднем плане и <kbd>ctrl</kbd>+<kbd>z</kbd> приостановить это.</li> </ul>

<p><strong>терминал</strong> или <strong>консоль</strong> - это аппаратная часть, с помощью которой пользователь может взаимодействовать с хостом. в основном клавиатура в сочетании с текстовым экраном.<br> в настоящее время почти все терминалы и консоли представляют собой "виртуальные".</p><p>файл, представляющий терминал, традиционно называется файлом <strong>tty</strong>. если вы загляните в каталог "/ dev" системы unix, вы найдете множество <strong>tty</strong> файлов, подключенных к виртуальным консолям (например, tty1 в linux), виртуальным терминалам (например, pts/0) или физически подключенное оборудование (например, ttys0 - это физический последовательный терминал, если таковой имеется, подключенный к первому последовательному порту хоста).</p><p><strong>консоль</strong> должен быть частью оборудования, физически подключенного к хосту (или его части). он играет особую роль в системе: он является основным пунктом доступа к системе для технического обслуживания, и некоторые специальные операции могут выполняться только с консоли (например, см. <code>single user mode</code>). <strong>терминал</strong> может быть и обычно является удаленной частью аппаратного обеспечения.</p><p>и последнее, но не менее важное: <strong>shell</strong> - это специальная программа, которая взаимодействует с пользователем через <strong>управляющий tty</strong> и предлагает пользователю способ запуска других программ ( например, bash, csh, tcsh).</p><p>--- <strong>эмулятор терминала</strong> - это программа, которая эмулирует физический терминал (например, xterm, gnome-терминал, minicom).</p><p>поэтому, когда вы смотрите на "текстовое окно" в вашей системе linux (под x11), вы ищете: <em> эмулятор терминала </em>, подключенный к <em> виртуальный терминал </em>, идентифицируемый <em> tty </em> файлом, внутри которого запускается <em> shell </em>.</p>

<p>краткое объяснение:</p><p>консоль - это терминал. система имеет одну консоль и, возможно, несколько терминалов. консоль обычно является основным интерфейсом для управления компьютером, например, когда он еще загружается.</p><p>терминал - это сеанс, который может принимать и отправлять ввод и вывод для программ командной строки. консоль является частным случаем этого.</p><p>tty - это, по сути, псевдоустройство, называемое ресурсом ядра, которое используется процессами для доступа к определенному терминалу. tty могут быть привязаны к оборудованию, такому как последовательный порт, или могут быть виртуальными, например, созданы, когда пользователь входит в сеть через сеть</p><p>оболочка - это программа, которая используется для управления и запуска программ. он часто используется в интерактивном режиме, через терминал. существует несколько программ shell, bash, пожалуй, наиболее часто используемый shell сегодня. другие оболочки, в произвольном порядке, включают bourne shell, c-shell, dash, tsch, ksh и все более популярную zsh. есть много других.</p><p>когда у вас есть графический интерфейс, вы можете использовать терминальную программу, чтобы нарисовать границу с изменяемым размером nice, добавить полосы прокрутки, отформатировать текст и т.д. для сеанса терминала. часто они называются терминальными эмуляторами, а иногда они могут обрабатывать несколько сеансов через концепцию tab. эмулятор терминала часто запускает оболочку, чтобы вы могли интерактивно работать в командной строке.</p>

<p>a <strong> [~ # ~] tty [~ # ~] </strong> (то есть <strong> [~ # ~] t [~ # ~] </strong> ele <strong> [~ # ~] ty [~ # ~] </strong> pewriter) - специальное устройство, которое позволяет людям глухие, слабослышащие или с нарушениями речи используют телефон для общения, позволяя им набирать текстовые сообщения. tty требуется на обоих концах разговора, чтобы общаться.<br> или<br> <strong> [~ # ~] tty [~ # ~] </strong> является <strong> терминалом </strong> который используется для ввода текстового сообщения.</p><hr><p><strong> оболочка </strong>: внешняя защитная покрывающая часть семени, то есть ядро.<br> или<br> структура или внешняя структура к центральной или существенной части системы.<br> <a href="https://i.stack.imgur.com/muysk.jpg"><img src="https://i.stack.imgur.com/muysk.jpg" alt="enter image description here"></a> </p><hr><p><strong> консоль </strong> означает клавиатуру и монитор физических подключений к компьютеру.</p>

<p>уже есть два отличных ответа, но я хотел бы добавить информацию о фразе <strong> "виртуальный терминал" </strong>. обычно это означает то, что обеспечивает внешний вид/функциональность терминала, т.е. е. <a href="/questions/tagged/terminal-emulator">терминал-эмулятор</a> в широком смысле. но в первые дни linux (1994–95) использовался некоторыми разработчиками как синоним с <a href="https://unix.stackexchange.com/questions/228050/how-virtual-consoles-are-related-to-traditional-computer-terminals">"виртуальная консоль" (несколько несвязанных пользовательских интерфейсов)</a> . это использование сохраняется в документации; два разных термина использовались (и используются) для обозначения tty1, tty2… штуковины. в настоящее время (начиная с 1996 г.) "виртуальный терминал" может также относиться к эмуляторам терминалов на основе <a href="/questions/tagged/pty">pty</a> .</p><p>linux <code>vt</code> (драйвер системной консоли в текстовом режиме) был первой частью ее ядра. первоначально он использовался для подключения к мэйнфреймам, и в этом смысле это "виртуальный терминал", отсюда и название. код, управляющий виртуальными консолями <a href="https://github.com/torvalds/linux/blob/master/drivers/tty/vt/vt.c">находится в <code>vt.c</code></a> также. инженеры ядра linux последовательно используют слово "консоли" для обозначения tty1, tty2… и используют для них префикс "vc\_". например, есть <code>vc\_allocate</code> функция. с другой стороны, разработчики таких инструментов пользовательского пространства, как <code>kbd</code> и <code>console-tools</code> взаимозаменяемо использовали "виртуальную консоль" (vc) и "виртуальный терминал" (vt). ī̲ связался с <a href="http://www.win.tue.nl/~aeb/">andriese. brouwer</a> и попросил его уточнить терминологию, использовавшуюся ранними разработчиками (1994–95). андриес любезно предоставил некоторые ответы. он утверждает, что vt и vc являются синонимами и "неделимыми" сокращениями. -> в общем, виртуальная консоль - это виртуальный терминал, но обратное неверно. те "виртуальные терминалы", которые не являются ли виртуальные консоли действительно <em> псевдотерминалами</em> (как утверждает андриес, эти <em> не vt</em>). в отличие от виртуальных консолей, где ядро обеспечивает функциональность терминала для консольного приложения, псевдотерминалы <a href="https://unix.stackexchange.com/questions/117981/what-are-the-responsibilities-of-each-pseudo-terminal-pty-component-software">используйте "устройства" pty для организации связи между консольными приложениями и программой создания терминала, которая выполняется в пространстве пользователя</a> . примерами являются эмуляторы терминала на основе x и <code>sshd</code>, который выделяет псевдотетию для каждого сеанса входа в систему. псевдотти нельзя назвать "консолью" - это ошибка.</p>

<ul> <li> <p>терминал = интерфейс, который обеспечивает отображение для вывода и клавиатуру для ввода в сеансе оболочки.</p> </li> <li> <p>shell = интерпретатор, который выполняет команды, напечатанные в виде строки</p> </li> <li> <p>консоль: на самом деле мы используем два типа консоли</p> <ul> <li> <p>физическая консоль = аппаратный дисплей и клавиатура, используемые для взаимодействия с системой</p> </li> <li> <p>виртуальная консоль = одна из нескольких логических консолей, каждая из которых может поддерживать независимый сеанс входа в систему.</p> </li> </ul> </li> <li> <p>tty (телетайп т.е. терминал). терминал - это просто устройство пользовательского интерфейса, которое использует текст для ввода и вывода.</p> </li> </ul>

<p>вам нужно погрузиться в историю.</p><p>были пишущие машинки с бумагой и клавиатурой. их называли телетайпами (что означает "удаленный тип", поскольку "теле" означает "удаленный") или <strong> ttys </strong> для краткости. в 70-х годах их заменили устройства с элт-монитором, называемые стеклянными <strong> ttys </strong>.</p><p>любому компьютеру нужен какой-то способ сообщить о своем состоянии и ошибках (и, возможно, принять команды). это делается через <strong> консоль </strong>, которая почти всегда подключена напрямую к компьютеру. итак, для консоли <strong> есть два значения </strong>: то, что используется для сообщения о состоянии, и то, что напрямую связано.</p><p>unix - это интерактивная система: к ней могут подключиться несколько пользователей и запускать приложения. первые компьютеры использовали для этого телетайпы (<strong> tty </strong>): каждому пользователю был подключен телетайп к машине с последовательным соединением. такой телетайп называется <strong> терминал </strong>. unix также получил специальную подсистему для обработки "пользователей, сидящих за терминалами", которая также называется <strong> tty </strong>, потому что первые терминалы были телетайпами. каждый процесс может быть подключен к tty в unix. это означает, что где-то рядом с терминалом сидит пользователь. смотрите <a href="http://www.linusakesson.net/programming/tty/">http://www.linusakesson.net/programming/tty/</a> для получения дополнительной информации.</p><p>пользователям нужен какой-то способ указать ядру запустить приложение. <strong> для этого используется оболочка </strong> (sh, bash, csh, ksh и т.д.). <strong> оболочка </strong> работает на <strong> tty </strong>, принимает команды от пользователя и просит ядро запустить какое-то приложение.</p><p>но терминалы не всегда физически связаны с машиной. может быть какое-то приложение, которое "эмулирует" терминал, принимающий нажатия клавиш от пользователя и отправляющий их куда-то (xterm и ssh являются хорошими примерами). для этого в kernel есть api, называемый <strong> псевдотерминалом </strong>. таким образом, ваш <strong> tty </strong> действительно может быть подключен к какому-либо приложению, а не к реальному терминалу. xterm использует x11 для отображения текста, а ssh использует для этого сетевое соединение.</p><p>у ibm pc есть клавиатура и видеокарта (их также называют <strong> консолью </strong> иногда). linux может делать с ним разные вещи:</p><ul> <li>используйте его как "движок для сообщения об ошибках и статусе": консоль linux. если вы передадите console =/dev/ttys0 ядру, оно будет использовать в качестве консоли что-то, подключенное к com1, а если нет, то будет использовать консоль пк.</li> <li>используйте его для эмуляции терминала, так называемого <strong> виртуального терминала </strong> (vty).</li> </ul><p>он также может прекратить эмуляцию терминала на консоли и передать его в какое-либо приложение. приложение может переключать свой режим видео и использовать его исключительно (x11 или svgalib могут сделать это).</p><p>итак, вот современные значения:</p><ul> <li>терминал: что-то с реальным пользователем, сидящим за ним. может быть физическим терминалом (редко) или псевдо-терминалом (xterm, ssh) или виртуальным терминалом (vty в linux)</li> <li>оболочка: приложение (bash, tcsh и т.д.), которое помогает пользователю взаимодействовать с системой.</li> <li>tty: терминал или подсистема ядра для поддержки терминалов.</li> <li>консоль: что-то, где сообщается о состоянии и ошибках (<code>/dev/console</code>) или физическая клавиатура и видеодисплей, подключенные к компьютеру.</li> </ul>

<p>вот краткий ответ -</p><p><strong> ядро </strong> - самая внутренняя часть любой современной операционной системы, которая напрямую взаимодействует с реальным оборудованием.</p><p><strong> shell </strong> - обертка вокруг реального ядра. всякий раз, когда мы запускаем команду, мы фактически общаемся с shell, которая, в свою очередь, вызывает соответствующие инструкции ядра. кроме того, оболочка способна выполнять некоторые другие действия, такие как поиск подходящей программы, в то же время имея команды, некоторые сокращения имени файла, команды конвейеризации и т.д.</p><p><strong> терминал </strong> - в эпоху более ранних вычислений компьютеры (известные как мейнфреймы) были гигантскими. таким образом, было легко иметь один процессор и подключать его из разных мест. терминал - это фактическое оборудование с клавиатурой и устройствами вывода, подключенными к мэйнфрейму.</p><p><strong> консоль </strong> - специальный тип терминала, который напрямую подключен к мэйнфрейму для администрирования ос.</p><p><strong> tty </strong> - teletypewriter используется для отправки и получения данных на мэйнфрейм и с него. использовался до того, как стали доступны видеотерминалы. но условно это все еще назвали как tty. даже комманда <code>stty</code></p><p>подробный подробный ответ здесь - <a href="http://unix.palash90.in/2017/07/terminal-console-shell-kernel-commands.html">терминал, консоль, оболочка, ядро, команды - различные части компьютера</a> </p>

<p>помимо принятого ответа и <a href="http://www.linusakesson.net/programming/tty/">статьи tty демистифицированной</a> , я действительно любил читать эти две статьи:</p><p> <a href="https://www.feyrer.de/netbsd/ttys.html">этот</a> основан на netbsd.</p><blockquote> <p>в каменные века unix компьютерные системы состояли из мэйнфрейма, большого блока мигающих огней, в котором были память, запоминающее устройство и вычислительные устройства, и которые запускали процессы, запускаемые пользователями или операторами. поскольку оборудование было очень дорогим, системы использовались как настоящие многопользовательские системы, и многие люди одновременно взаимодействовали с системой. в отличие от современных рабочих станций unix, у него обычно не было стационарного монитора и клавиатуры. вместо этого, выдача команд на аппарат и извлечение выходных данных выполнялась по последовательным линиям, сначала с использованием телетайперов, а позже с терминалами crt (электронно-лучевая трубка). teletypers - вот откуда берутся "ttys" в unix - это электронные пишущие машинки, которые отправляют на хост ключи, нажатые по последовательной линии, а ответы отправляются обратно на символ телетайпера символом по последовательной линии со встроенным принтером. положить ответ на бумаге, как печатная машинка.</p> </blockquote><p> <a href="https://www.quora.com/in-linux-unix-type-systems-what-is-the-concept-of-terminal-devices">этот</a> основан на linux.</p><blockquote> <p>терминалы - это устройства, которые предоставляют расширенные возможности ввода/вывода сверх того, чего можно достичь, используя только обычные файлы, каналы и сокеты. эти функции предназначены для облегчения взаимодействия людей с компьютерами и бесполезны для программ, пытающихся общаться друг с другом.</p> </blockquote>

<p>позвольте мне в этом разобраться ... я буду использовать unix и linux более или менее как синонимы. если я имею в виду нечто историческое, которое предшествовало существованию linux, я обычно буду писать "unix", и если я говорю о чем-то более новом или о чем-то специфическом для разновидности linux unix, я обычно буду писать "linux" ".</p><h3>ракушка</h3><p>единственная вещь в вашем списке, которая является дискретным понятием, которое не пересекается с другими, это "shell". оболочка - это программа, целью которой является общение с пользователем и выполнение операций операционной системы от его имени.</p><p>в наиболее распространенных оболочках используется метод, называемый "командной строкой", который состоит в отправке пользователю какого-либо запроса, ожидании ввода пользователем текстовой команды и выполнении этой команды. но существуют основанные на меню оболочки и даже графические оболочки (такие как windows file explorer), хотя ни один уважающий себя человек из unix никогда бы не назвал такую вещь "оболочкой".</p><p>в unix, если кто-то называет что-то "оболочкой", он почти наверняка подразумевает некоторую форму интерфейса командной строки, как я только что описал. и в мире unix очень странно называть что-либо "оболочкой", если оно не общается с пользователем, используя модель tty, которую я опишу далее.</p><h3>tty</h3><p>это сбивает с толку, потому что это может относиться к нескольким видам вещей.</p><p>в linux есть устройство под названием "tty". это абстрактное устройство, которое, как ожидается, будет использоваться для двунаправленной связи с чем-то, что либо является пользователем, либо каким-либо образом принимает информацию от пользователя. иногда это абстрактное устройство может напрямую соответствовать какому-то физическому устройству. иногда это может быть программа, которая представляет кому-то окно, в котором появляется сообщение и в который пользователь может ввести текст.</p><p>но причина, по которой существует это абстрактное устройство, и причина, по которой его называют "tty", заключается в том, что "tty" означает "телетайп", то есть реальное физическое устройство с принтером, который печатался на бумаге в сочетании с клавиатурой. модель, которую абстрактное устройство 'tty' представляет программам, которые его используют, заключается в том, что на другом конце есть телетайп. вы отправляете ему символы, и эти символы появляются на телетайпе. когда вы читаете из него символы, эти символы представляют собой клавиши, которые были набраны на клавиатуре.</p><p>старые ttys на основе бумажного принтера были быстро вытеснены с ttys видео. на тех, конечно, нет рулона бумаги. и, по сути, можно перезаписать любой символ на экране. но вместо того, чтобы представлять какой-то абстрактный "экранный" интерфейс для программ, от программ ожидается, что они будут отправлять специальные потоки символов, называемые escape-последовательностями, которые выполняют множество задач. обычно существует абстрактная вещь, называемая "курсор", которую можно перемещать по экрану, и любой отправленный символ заменит все, что находится у курсора, а курсор переместится еще на один символ. часто вы можете изменить цвет персонажа, который также будет напечатан с escape-последовательностями.</p><p>есть "стеклянные тты", которые не следуют этой модели и, следовательно, плохо обрабатываются в мире unix. семейство видеотерминалов ibm 3270 попадает в эту категорию.</p><p>то, что люди в linux/unix обычно называют "окном оболочки", является эмуляцией стекла с использованием графического интерфейса пользователя. внутри программы, работающие внутри окна оболочки, общаются с виртуальным tty-устройством, которое иногда называют псевдо-tty или псевдо-терминалом (aka pty).</p><h3>терминал</h3><p>терминал - это просто место, где компьютер и человек должны взаимодействовать. терминалы могут быть полностью графическими и никоим образом не следовать модели tty, даже если программа может использовать их возможности для эмуляции этого. все фактические физические данные (стеклянные или иные) являются терминалами.</p><h3>приставка</h3><p>консоль - это особый вид терминала, который, как правило, предполагается подключать каким-либо прямым безопасным способом к оборудованию, на котором работает операционная система.</p><p>в linux консоль виртуализирована небольшим образом, что позволяет использовать специальное нажатие клавиши для переключения между виртуальными консолями. но эта виртуализация осуществляется с помощью реального аппаратного обеспечения программным обеспечением в ядре.</p><p>есть способы использовать linux через так называемую "последовательную консоль", которая представляет собой консоль, подключенную к компьютеру через последовательный порт, такой как порт usb (или, на некоторых очень маленьких и/или очень старых компьютерах, порт rs-232). в некотором роде) и следует довольно старой модели старого телетайпа.</p><p>опять же, идея заключается в том, что эта консоль напрямую подключена к компьютеру, а не через какую-то сеть, которая может позволить любому подключаться.</p>