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


211

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


1
(1/2) Agent Cool в основном верен, но приведенное им определение консоли устарело, учитывая данную тему. Его ссылка содержит правильную информацию, если вы будете следовать ей, хотя. Прочитайте все определение по его ссылке. Консоль используется свободно для обозначения множества похожих вещей, но, что наиболее важно, она обычно относится к ЛОКАЛЬНЫМ АППАРАТНЫМ устройствам ввода и вывода человека, например клавиатуре, дисплею и, возможно, мыши.
0xSheepdog

1
(2/2) Это может показаться педантичным, но как опытный systemmadmin, я скажу вам, что это не так . Когда система имеет проблему и кажется, что она полностью аварийна / выключена / отключена, вы должны проверить физическую консоль системы, чтобы убедиться, что она все еще функционирует, но просто потеряла сетевое подключение. Эта маленькая деталь может спасти или стоить вам данных, обработки информации и т. Д. Pedantic, да. Но важно.
0xSheepdog

6
@ 0xSheepdog Возможно, вы захотите расширить эти комментарии до полного ответа (включая определения или пояснения для других терминов), опубликованного как таковой. Для вопроса неплохо иметь несколько ответов (кроме случаев, когда они передают одинаковую информацию и одинаковым образом). Я не уверен, почему важная практика проверки компьютера локально зависит от знания / вызова его физического человеческого интерфейса как консоли, но, возможно, есть аргумент, что это важно для эффективного общения с коллегами или использования документации. (Вы можете уточнить это в своем ответе.)
Элия ​​Каган

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

Ответы:


143

Краткий ответ:

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

Длинный ответ:

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

Терминал

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

  • Приложения с графическим интерфейсом, работающие в X Window System : Xterm , Gnome Terminal, Konsole, Terminator и т. Д.
  • Screen и tmux , которые обеспечивают уровень изоляции между программой и другим терминалом
  • Ssh , который соединяет терминал на одной машине с программами на другой машине
  • Ожидайте , для сценариев терминальных взаимодействий

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

Приставка

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

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

Интерфейс командной строки]

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

Ракушка

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

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

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

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

Переработано из Unix и Linux


1
Я бы не согласился с вами в том, что терминал является подходящим термином для файла терминального устройства и / или кода обработки терминала в ядре (tty ioctls, raw / cooked, редактирование базовой строки). терминал = материал, который обрабатывает escape-коды, превращает нажатия клавиш в символы и рисует на экране (или печатает на бумаге / ленте). Смотрите мой ответ для более подробной информации.
Питер Кордес

2
@PeterCordes На этом уровне детализации нет никаких различий. POSIX определяет терминал как синоним терминального устройства в смысле файла устройства. Это значение Unix. Это действительно то, что обрабатывает управляющие коды, превращает нажатия клавиш в символы и рисует на экране (или передает по сети, или регистрирует в файл и т. Д.).
Жиль

2
хм, да, терминал тоже привык в этом смысле. Предполагается, что на одном конце терминального устройства, которое обрабатывается ядром, есть эмулятор терминала или последовательный порт с подключенным к нему терминальным устройством. Обработка tty в ядре (в готовом режиме) обрабатывает только несколько управляющих кодов (сигналы на ^ c, редактирование строки на ^ u / ^? (Удаление). Я пытаюсь провести линию между кодом tty и частью Linux который реализует VT100-подобный терминал на графической карте и клавиатуре USB / ps2 / AT. Вы можете компилировать Linux без этого, но не без tty.
Питер Кордес

3
@PeterCordes В конфигурации ядра поддержка терминалов может быть исключена (это полезно для некоторых редких встроенных систем, где память чрезвычайно ограничена); это контролируется CONFIG_TTY. Поддержка эмуляторов терминалов (более правильно называемых псевдо-терминалами - «эмулятор терминала» не всегда включает telnetd, screen, Ожидайте,…) управляется CONFIG_UNIX98_PTYS. Поддержка отображения в текстовом режиме ПК и клавиатуры или тому подобного контролируется CONFIG_VT. Смотрите drivers/tty/Kconfigв исходном коде ядра.
Жиль

2
К сожалению, у меня не было свежего источника ядра. CONFIG_TTY был добавлен только в 2012 году. В любом случае, да, надеюсь, это поможет любому, кто попытается обернуть голову, что представляют собой разные части головоломки и как они сочетаются друг с другом.
Питер Кордес

60

Визуальное представление.

Терминал

Что-то, за что можно сесть и работать как босс.

Терминал

Приставка

Некоторое оборудование, которое делает кучу вещей.

Приставка

Другим примером консоли будет игровая консоль, такая как Super Nintendo [где вы можете играть в Actraiser]

Ракушка

В основном приложение для запуска команд.

РакушкаРакушка

Интерфейс командной строки]

В основном все, что вы вводите команды.

CLICLI


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

2
Хорошее усилие. Просто и легко
Умар Муктар

19

Из Информационного проекта Linux :

Terminal : Технически, окно терминала, также называемое эмулятором терминала, является текстовым окном в графическом интерфейсе пользователя (GUI), который эмулирует консоль.

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

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

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

Командная строка . Командная строка - это пробел справа от командной строки в режиме полнотекстового отображения на мониторе компьютера (обычно ЭЛТ или ЖК-панели), в котором пользователь вводит команды и данные.


5
«Терминал» означает физический текстовый экран. То, что вы говорите, на самом деле "эмулятор терминала".
Зарегистрированный пользователь

2
@RegisteredUser Эмулятор терминала - это своего рода терминал. Слово терминал не ограничивается физическими терминалами (обычное слово для этого - консоль ).
Жиль

2
Это определение командной строки неверно. Командная строка не ограничена режимом полнотекстового отображения.
Жиль

1
@ Жиль, я взял его из одной веб-ссылки. Вы упомянули правильный ответ в порядке.
rɑːdʒɑ

5
@AgentCool Я не подвергаю сомнению вашу способность копировать-вставлять. Я подвергаю сомнению Ваш выбор источника. Ответственность за то, что вы публикуете, написана вами или нет.
Жиль

15

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

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

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

Оболочка это вещь ОС. На компьютере у вас есть ядро, которое, например, в Ubuntu является частью Linux. Теперь, поскольку ядро ​​действительно низкоуровневое, предусмотрена оболочка - программа, которая позволяет пользователю легко взаимодействовать с ядром. Вот что такое BASH, например.

Консоль есть (из словаря)

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

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

Командная строка - это просто интерфейс - противоположность GUI. А именно, есть два типа интерфейсов на компьютере; CLI (интерфейс командной строки) и GUI (графический интерфейс пользователя). Основное отличие состоит в том, что первый получает ввод с клавиатуры, а второй - с помощью мыши.


1
Что вы имеете в виду "противоположность GUI"?
Корай Тугай

2
С противоположностью я имею ввиду, что у вас есть либо CLI, либо GUI. Я уточнил теперь немного больше в ответе.
Питикос

12

Подводя итог моему ответу:

Shell - это программа, которая выводит processesкоманды и returnsвыводит их, как bash в Linux.

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

Итак, я открываю Gnome-Terminal , появляются черные окна, которые запускают Shell, чтобы я мог выполнять свои команды.

Консоль - это особый вид терминала , это также физическое устройство. Например, в Linux у нас есть virtual consoleдоступ к ним с помощью комбинации Ctrl+ Alt+ F1 to F7.

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


11

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

Чтобы избежать этого, я просто скажу xterm как замену для терминала XTerm / Gnome / Konsole / mrxvt / etc / etc. То же самое для bash.

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

Терминал : что-то, что обеспечивает взаимодействие человека с программами через двунаправленный поток символов ASCII / UTF8 / других, обычно с VT100 или аналогичной обработкой кода перехода. (Например, клавишу Backspace, Delete, клавиши со стрелками и т. Д. Генерируют управляющие коды. Программы могут печатать управляющие коды для перемещения курсора по экрану терминала, переключения на жирный текст и / или цветной, очистки или прокрутки экрана и т. Д.) В старые времена это часто было специализированное устройство с экраном, клавиатурой и последовательным портом. Теперь это обычно программа наподобие xterm.

Существуют файлы устройств для программ для чтения / записи с / на терминалы, а виртуальные терминалы также имеют другую сторону, доступную как файл устройства. Здесь xterm записывает ваши данные, чтобы bash мог их прочитать.

Каждый терминал, включая виртуальный, обеспечивает базовое редактирование строк, когда он находится в режиме готового (в отличие от необработанного). Это обрабатывается кодом ядра. Это bash, который обеспечивает редактирование строки, которое вы можете сделать с помощью клавиш со стрелками. (Попробуйте запустить catи набрать, если вы хотите увидеть, как выглядит базовое редактирование строк, предоставляемое ядром. Backspace работает, и пара других вещей в соответствии с вашими настройками stty.)

Несмотря на то, что за терминальными устройствами имеется много кода ядра, его можно назвать кодом обработки терминала, а не самим терминалом.

Изменить: Жиль убедил меня, что ссылка на tty в качестве терминала является правильным использованием. Эмуляторы терминала и интерактивные программы, которые запускаются подключенными к терминалу, зависят от семантики терминала, реализованной ядром. (Большая часть этого поведения стандартизирована POSIX и одинакова в Linux / * BSD / других Unix.) Полноэкранный текстовый редактор зависит от поведения Unix tty, а также от обработки escape-кода перемещения курсора, и многие другие функции эмулятора терминала.

Однако физический VT100 с экраном, клавиатурой и последовательным портом является экземпляром терминала. Для завершения не требуется ядро ​​Unix на другом конце последовательного порта. Нечто совершенно иное может быть отправкой управляющих кодов и текста ASCII и получением того же от него. Это был бы только VT100, а не терминал Unix. Эмулятор терминала плюс семантика Unix tty составляют полный пакет терминала Unix, на котором обычно запускается такая программа, как bash.

Командная строка - это стиль пользовательского интерфейса, в котором вы что-то вводите, а затем нажимаете return, чтобы что-то произошло. Он также используется как сокращение для оболочки командной строки, такой как bash или MS-DOS, но вы также можете сказать «это инструмент командной строки» о чем-то вроде fdisk. Рассматривая только программы, которые используют терминал для своего пользовательского интерфейса, два основных семейства - это командная строка и полноэкранный текст (например, редактор, такой как vi или emacs -nw).

Программы командной строки, которые обычно работают на терминалах, почти всегда работают с перенаправлением ввода и вывода в файлы, но полноэкранные программы на основе терминалов, такие как редакторы или почтовые клиенты, работают только в интерактивном режиме и не будут работать.

Оболочка представляет собой программу для запуска других программ. В контексте Unix обычно подразумевают оболочку командной строки (то есть оболочку Bourne или эквивалент оболочки C). Оболочки Unix также могут читать свои входные данные из файлов, то есть сценариев оболочки. Это полные языки программирования с переменными, циклами и условными обозначениями, и многие программы написаны на bash (или только с /bin/shфункциями оболочки POSIX, для большей переносимости). Также легко можно быстро написать for i in *.something; do some_program "$i";done в интерактивной оболочке.

Собрав все это вместе, оболочка типа bash (или любая другая программа, которую вы запустили, выполнив команду оболочки), получит символы от /dev/pts/Nтерминального устройства после того, как xterm запишет ваш ввод на его стороне псевдотерминала. Если вы запустите cat, а затем нажмете ^c, tty-код ядра будет действовать ^cи отправит a SIGINTпроцессу переднего плана на этом терминале. (Обратите внимание на использование терминалав этом контексте означает Unix tty, а не эмулятор терминала или что-то, подключенное к последовательному порту.) Это происходит потому, что оболочка переводит терминал в «приготовленный» режим перед запуском любой программы, что означает, что ядро ​​действует на некоторый элемент управления. последовательности. (Код tty по-прежнему не имеет ничего общего с обработкой управляющих кодов VT100, только с несколькими управляющими кодами с низким ASCII.) Если вместо xterm вы используете консольный текстовый терминал Linux, то ядро ​​IS выполняет эмуляцию VT100, и обрабатывать все эти вещи. Linux может быть скомпилирован без поддержки текстового терминала виртуальной консоли, но не без поддержки tty.

Консоль иногда используется как синоним терминала (в KDE даже есть эмулятор терминала, называемый Konsole).

Как указывает 0xSheepdog, он также имеет другое значение: локально подключенное оборудование взаимодействия с человеком.

В контексте ядра консоль имеет другое специфическое значение: это терминал, на котором пишутся загрузочные сообщения. Это может быть последовательный порт. Обычно, конечно, это текстовая консоль, реализованная ядром поверх драйверов для графического оборудования и клавиатур USB / ps2 / AT. Если вы загрузите Linux с console=tty0 console=ttyS0,115200n8помощью командной строки, вы получите сообщения ядра на вашем экране И на последовательном порту.

Linux реализует виртуальные консоли ( /dev/tty1до N ). Вы можете поменять местами, которыми управляет ваш физический экран / клавиатура, с помощью Ctrl+ Alt+ . Типичные дистрибутивы Linux создают 6 и запускаются на всех них, поэтому даже если вы не можете или не хотите запускать X11, вы можете войти в систему 6 раз и переключаться между командой, страницей руководства и всем остальным, без запуск программы, такой как экран. Linux (ядро) включает эмулятор терминала в стиле VT100 для обеспечения интерфейса терминала через экран и клавиатуру на виртуальных консолях.FNgetty

Стандартные 6 виртуальных терминалов с подсказками входа в систему - вот почему Ctrl+ Alt+ F7возвращает вас к сеансу X11: X-сервер захватывает следующую доступную виртуальную консоль. ( Хотя X-сервер открывается /dev/input/...напрямую, а не получает ваши нажатия клавиш /dev/tty7.)

Так что «переключиться на текстовую консоль» означает нажать Ctrl+ Alt+ F1и использовать этот терминал. В те времена, когда компьютеры работали медленно и не имели много оперативной памяти, некоторые люди проводили большую часть своего времени на текстовых консолях, поскольку они были быстрыми, вы могли установить хороший шрифт и даже изменить размер терминала, чтобы иметь меньшие символы, но иметь больше на экране сразу. Alt+ Leftи Alt+ Rightпоменять на предыдущую / следующую консоль. (X11 отключает это для своей консоли, конечно, оставляя только комбинацию Ctrl+ Alt+ .)FN

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


2
Консоль означает «основной» физический терминал не только в контексте ядра. Это то же самое значение в /dev/console. Консоль не особенно неоднозначна - хотя иногда она используется в более общем смысле терминалов , это довольно редко (реже, чем терминалы , используемые для обозначения консоли).
Жиль

1
правильно, да, эхо фу | Команда sudo tee / dev / console> / dev / null будет напечатана на экране, если ваш текущий VT находится в текстовом режиме (включая консоль кадрового буфера, а не просто текстовый режим VGA). Если бы вы загрузились с консоли на последовательном порту, я думаю, что это пошло бы туда. Вы можете сказать, что / dev / console это файл устройства для всего, что ядро ​​рассматривает как системную консоль. Ничто другое в системе не должно иметь представления о том, что консольный tty вообще существует (за исключением того, что при загрузке-восстановлении запускается оболочка на консольном TTY, если система не загружается в многопользовательском режиме. Обычно из initrd)
Питер Кордес

1
X-сервер Xorg (strings / usr / bin / Xorg) не использует / dev / console для получения аппаратного доступа. Он использует / dev / tty0, и / dev / tty% d, и / dev / vc /% d, чтобы настроить себя на свой собственный VT. Я почти уверен, что Xorg по-прежнему будет нормально работать на ПК, который загружается с консолью ядра через последовательный порт. И что виртуальные терминалы в текстовом режиме все еще будут работать. Чем больше я рассматриваю это, тем больше я склоняюсь к тому, чтобы рассматривать консоль в контексте ядра как просто специальный терминал, выбранный во время загрузки. (На самом деле Linux может выводить свои консольные сообщения на несколько терминалов одновременно, если вы об этом попросите.)
Питер Кордес,

6

Я думаю, что в первые дни компьютеров с разделением времени у каждого пользователя был терминал (когда он мог его получить!), Но только у системных операторов была консоль. Консоль может использоваться для таких задач, как перезагрузка компьютера или получение диагностики системы, которая была невозможна из пользовательских терминалов. Консоль находилась в машинном отделении, как неотъемлемая часть компьютера, а терминалы могли быть удаленными. Консоль также будет включать аппаратные индикаторы и переключатели, а не только ввод и вывод текста.

Я бы сказал, что командная строка - это область, где пользователь может вводить команду, а оболочка - это программа, которая интерпретирует / подчиняется этой команде. Термин «оболочка» очень специфичен для производных Unix; «Командная строка» больше в традициях Windows / DOS. Эквивалент на мэйнфреймах обычно называется «языком управления заданиями».

Понятно, что эти оригинальные различия со временем стираются по мере изменения технологий.


3

Пытаясь ориентироваться на пользователя, короткий ответ:

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

shell - реальная программа, запускаемая операционной системой для обработки того, что вы вводите command line. Отсюда и название - удобная оболочка для не дружественного ядра ОС. Он предоставляет командную строку, например, $или >, запускает свои собственные команды и приложения. Вы всегда работаете с shellпрограммой и никогда не работаете с консолью или терминалом напрямую.

console - это окно, в котором работают ваши текстовые программы. Это окно обрабатывает нажатия клавиш, знает, что это ширина и высота. Может быть полноэкранным.

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

Последовательная консоль - это консоль, которая обрабатывает входной поток как терминал.


3

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

Оболочка представляет собой слой над ядром:

  • Он интерпретирует команды, введенные пользователем, и обрабатывает их. Оболочка имеет доступ к ядру, в отличие от пользователей. Пользователи могут получить доступ к ядру только путем ввода команд с помощью оболочки и с помощью процессов (т. Е. Запуска программ). Программы используют системные вызовы для доступа к функциональности ядра. Все системные вызовы вместе образуют системный API.
  • Примеры оболочек приведены во втором терминальном определении.

Терминал имеет множество значений:

  • (1) Текстовый терминал . Это комбинация дисплея монитора и клавиатуры. Кабель подключил терминал к компьютеру (часто косвенно). Он был назван терминалом, так как он был расположен на конце этого кабеля. Эти терминалы обычно физически отделены от компьютера, потому что в те времена многие терминалы были подключены к одному мэйнфрейму / компьютеру, поэтому несколько пользователей могли иметь доступ к компьютеру одновременно.
  • (2) Окно терминала, также называемое эмулятором терминала . В Linux окно терминала - это эмуляция консоли, которая содержится в окне GUI. Это CLI, в который вы вводите свой текст, и этот ввод читается используемой оболочкой. Существует много типов оболочек (например, bash, dash, ksh88) и терминалов (например, konsole, gnome).
  • (3) Для объяснения псевдотерминалов , посмотрите это . Это пара из двух «файлов устройств», используемых для связи между процессом и эмулятором терминала.

Консоль имеет много значений:

  • (1) приборная панель, содержащая элементы управления для компьютера.
  • (2) Системная консоль или компьютерная консоль . Это комбинация монитора и клавиатуры, подключенных к компьютеру. Это синоним того, что мы называем «текстовым терминалом». Иногда также другие периферийные устройства пользовательского ввода, такие как мышь, являются частью консоли.
  • (3) Интерфейс командной строки, который охватывает весь экран. Это контрастирует с окном терминала, которое представляет собой графический интерфейс пользователя с X в правом верхнем углу, чтобы закрыть его. Это два режима отображения для CLI (интерфейсы командной строки) в Unix-подобных системах. Как и в окне терминала, консоль может запускать много оболочек.

Часто операционные системы позволяют запускать несколько консолей на физической консоли (определение консоли 2). Они называются виртуальными консолями или виртуальными терминалами , и к ним можно получить доступ через комбинации ctrl+ alt+ Fx. Например, если вы хотите открыть 3-ю виртуальную консоль, вы используете комбинацию ctrl+ alt+ F3.

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


2

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

Консоль относится к (аппаратным) интерфейсам для терминалов. Т.е. есть серийные консоли, а в настоящее время в основном виртуальные .
Окно, условно обозначаемое как «консоль», - это оболочка, подключенная к терминалу системы через виртуальную консоль.

В те времена, когда компьютеры были дорогими, на объекте мог быть один настоящий компьютер и несколько терминалов, подключенных к нему через последовательные кабели («последовательная консоль»). Операционная система, операции и т. Д. Выполнялись на физическом компьютере, ввод и вывод выполнялись на консоли.
Вы можете переключаться между виртуальными терминалами, нажимая CTRL+ ALT+ F1(до F6): остаток тех времен.
Сегодня концепция «тонких клиентов» восходит к этому направлению, заключающемуся в централизации огромного количества ресурсов и предоставлении достаточного количества аппаратного обеспечения для обеспечения современного интерфейса на рабочем месте.

Оболочка - это «двигатель», который вы видите в терминале. Он обеспечивает взаимодействие с самой системой и добавляет полезные функции, такие как автозаполнение, переменные и т. Д.
Он переводит назад и вперед между реальной ОС / ядром, которое использует системные вызовы, и вами. Системные вызовы без оболочки немного похожи на кодирование, assemblerи оболочка по крайней мере дает вам C.

Командная строка относится к способу обмена ввода и вывода через текстовое окно. Строго говоря, линия , в которой вы печатаете (ток) в командной строке. Метод в целом более правильно называется интерфейсом командной строки или CLI.

  1. ядро
  2. предлагает терминал
  3. терминал подключен через консоль
  4. консоль запускает оболочку
  5. команды и выходные данные передаются через командную строку (интерфейс)

1
Инструкции командной строки понятны не ядру, а оболочке. «Базовая структура инструкций, которую понимает ядро» - это системные вызовы. «Базовый интерфейс командной строки UNIX» - это оболочка, между ней и «приятными функциями» нет разделения. «Терминал-эмулятор терминала» не является консолью.
Жиль

1
@ Жиль поправился. Очевидно, некоторые вещи перепутал себя там.
Марк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.