В чем разница между терминалом, консолью, оболочкой и командной строкой?
В чем разница между терминалом, консолью, оболочкой и командной строкой?
Ответы:
Краткий ответ:
Длинный ответ:
Консоль и терминал тесно связаны. Первоначально, они имели в виду оборудование, с помощью которого вы могли взаимодействовать с компьютером: в первые дни существования Unix это означало устройство в стиле телепринтера, напоминающее пишущую машинку, иногда называемое телетайпом, или сокращенно «tty». Название «терминал» пришло с электронной точки зрения, а название «консоль» с точки зрения мебели. Очень рано в истории Unix электронные клавиатуры и дисплеи стали нормой для терминалов.
В терминологии Unix терминал - это особый тип файла устройства, который реализует ряд дополнительных команд ( ioctls ) помимо чтения и записи. Некоторые терминалы предоставляются ядром от имени аппаратного устройства, например, при вводе с клавиатуры и выводе на экран текстового режима или при вводе и выводе, передаваемом по последовательной линии. Другие терминалы, иногда называемые псевдо-терминалами или псевдо-терминалами, предоставляются (через тонкий слой ядра) программами, называемыми эмуляторами терминалов . Некоторые типы эмуляторов терминала включают в себя:
Слово « терминал» также может иметь более традиционное значение устройства, через которое оно взаимодействует с компьютером, обычно с клавиатурой и дисплеем. Например, 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 оболочка пользователя - это программа, которая вызывается при входе в систему. Обычные учетные записи пользователей имеют оболочку командной строки, но пользователи с ограниченным доступом могут иметь ограниченную оболочку или какую-либо другую конкретную команду (например, для передачи файлов). только счета).
Разделение труда между терминалом и оболочкой не совсем очевидно. Вот их основные задачи.
\e[D
). Оболочка преобразует управляющие последовательности в команды (например, \e[D
→ backward-char
).M-x shell
в Emacs.foo
», «переключение цвета переднего плана на зеленый», «перемещение курсора на следующую строку» и т. Д. Терминал действует в соответствии с этими инструкциями.Переработано из Unix и Linux
CONFIG_TTY
. Поддержка эмуляторов терминалов (более правильно называемых псевдо-терминалами - «эмулятор терминала» не всегда включает telnetd, screen, Ожидайте,…) управляется CONFIG_UNIX98_PTYS
. Поддержка отображения в текстовом режиме ПК и клавиатуры или тому подобного контролируется CONFIG_VT
. Смотрите drivers/tty/Kconfig
в исходном коде ядра.
Визуальное представление.
Что-то, за что можно сесть и работать как босс.
Некоторое оборудование, которое делает кучу вещей.
Другим примером консоли будет игровая консоль, такая как Super Nintendo [где вы можете играть в Actraiser]
В основном приложение для запуска команд.
В основном все, что вы вводите команды.
Из Информационного проекта Linux :
Terminal : Технически, окно терминала, также называемое эмулятором терминала, является текстовым окном в графическом интерфейсе пользователя (GUI), который эмулирует консоль.
В наших словах приложение с графическим интерфейсом, откуда мы можем получить доступ к консоли пользователя.
Консоль : приборная панель, содержащая элементы управления для компьютера
Оболочка : Оболочка - это программа, предоставляющая традиционный текстовый пользовательский интерфейс для Linux и других Unix-подобных операционных систем.
Командная строка . Командная строка - это пробел справа от командной строки в режиме полнотекстового отображения на мониторе компьютера (обычно ЭЛТ или ЖК-панели), в котором пользователь вводит команды и данные.
Ответы здесь кажутся очень хорошими. Однако они слишком сухие и технические на мой вкус, поэтому я попробую.
Терминал - это конец чего-то, где он заканчивается. Например, если вы едете на метро в каком-то городе, станция, на которой вы спускаетесь, является вашим терминалом. Или в аэропорту терминал, где люди выходят, когда они достигают страны назначения, считается терминалом. Причина, по которой терминал в аэропорту в настоящее время является местом, куда вы доставляете людей на борт, и местом, куда вы выводите их из самолета, по очевидным экономическим причинам.
Цель компьютера - получить данные, что-то с ними сделать и выложить результат. Таким образом, терминал - это любое устройство, с которого вы можете получить результат вычислений (например, экран). Так получилось, что на первых компьютерах вход (клавиатура) и выход (экран) обычно были единым устройством. Из-за этого в настоящее время терминалами считаются любые устройства ввода / вывода. Мышь, клавиатура, экран, камера - все это терминалы.
Оболочка это вещь ОС. На компьютере у вас есть ядро, которое, например, в Ubuntu является частью Linux. Теперь, поскольку ядро действительно низкоуровневое, предусмотрена оболочка - программа, которая позволяет пользователю легко взаимодействовать с ядром. Вот что такое BASH, например.
Консоль есть (из словаря)
плоская поверхность, на которой расположены органы управления машиной, электрическим оборудованием и т. д.
Вот почему в музыкальной индустрии доска со всеми ручками, или в космическом челноке командный стол, все они считаются консолями. Super Nintendo и PS2 исторически называют также консолями, так как первые подобные развлекательные устройства выглядели как коробки с кучей кнопок на них.
Командная строка - это просто интерфейс - противоположность GUI. А именно, есть два типа интерфейсов на компьютере; CLI (интерфейс командной строки) и GUI (графический интерфейс пользователя). Основное отличие состоит в том, что первый получает ввод с клавиатуры, а второй - с помощью мыши.
Подводя итог моему ответу:
Shell - это программа, которая выводит processes
команды и returns
выводит их, как bash в Linux.
Терминал - это программа, представляющая run
собой оболочку , в прошлом это было физическое устройство (до того, как терминалы были мониторами с клавиатурой, они были телетайпами ), а затем его концепция была перенесена в программное обеспечение , такое как Gnome-Terminal .
Итак, я открываю Gnome-Terminal , появляются черные окна, которые запускают Shell, чтобы я мог выполнять свои команды.
Консоль - это особый вид терминала , это также физическое устройство. Например, в Linux у нас есть virtual console
доступ к ним с помощью комбинации Ctrl+ Alt+ F1 to F7.
Консоль иногда означает, что клавиатура и монитор физически подключены к этому компьютеру.
Эти термины часто идут вместе, поэтому люди используют один из терминов для обозначения коллекции. (т.е. из контекста обычно очевидно, что они имеют в виду окно терминала, предоставляющее интерфейс к оболочке командной строки).
Чтобы избежать этого, я просто скажу 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, вы можете сказать, что терминал также имеет несколько значений.)
/dev/console
. Консоль не особенно неоднозначна - хотя иногда она используется в более общем смысле терминалов , это довольно редко (реже, чем терминалы , используемые для обозначения консоли).
Я думаю, что в первые дни компьютеров с разделением времени у каждого пользователя был терминал (когда он мог его получить!), Но только у системных операторов была консоль. Консоль может использоваться для таких задач, как перезагрузка компьютера или получение диагностики системы, которая была невозможна из пользовательских терминалов. Консоль находилась в машинном отделении, как неотъемлемая часть компьютера, а терминалы могли быть удаленными. Консоль также будет включать аппаратные индикаторы и переключатели, а не только ввод и вывод текста.
Я бы сказал, что командная строка - это область, где пользователь может вводить команду, а оболочка - это программа, которая интерпретирует / подчиняется этой команде. Термин «оболочка» очень специфичен для производных Unix; «Командная строка» больше в традициях Windows / DOS. Эквивалент на мэйнфреймах обычно называется «языком управления заданиями».
Понятно, что эти оригинальные различия со временем стираются по мере изменения технологий.
Пытаясь ориентироваться на пользователя, короткий ответ:
Командная строка - строка, где вы вводите команды. Обычно он говорил, что вам нужно что-то запустить в окне текстового режима (интерфейс командной строки), предоставляемом вашей операционной системой.
shell - реальная программа, запускаемая операционной системой для обработки того, что вы вводите command line
. Отсюда и название - удобная оболочка для не дружественного ядра ОС. Он предоставляет командную строку, например, $
или >
, запускает свои собственные команды и приложения. Вы всегда работаете с shell
программой и никогда не работаете с консолью или терминалом напрямую.
console - это окно, в котором работают ваши текстовые программы. Это окно обрабатывает нажатия клавиш, знает, что это ширина и высота. Может быть полноэкранным.
терминал - это какое-то устройство с дисплеем для людей, которое принимает входной поток символов и показывает их. Пользователю не сообщают о высоте или ширине (только хаки) или нажатиях клавиш на клавиатуре - к нему идут только символы. Терминал обрабатывает специальные последовательности в этом потоке, чтобы раскрасить вещи, очистить экран и сделать другие неприятные вещи. Терминалы ненадежны, потому что легко запутаться, если файл, который вы выводите, содержит эти специальные последовательности. Они популярны в сетевых интерфейсах и интерфейсах отладки устройств, потому что вам нужен только один поток для отправки вывода и управления устройством вывода, и вы можете просто tap
вступать в разговор без необходимости инициализации или создания окна.
Последовательная консоль - это консоль, которая обрабатывает входной поток как терминал.
Это расплывчатая тема, потому что термины очень неоднозначные. Я настоятельно рекомендую прочитать ссылки, которые я предоставил в этом ответе, которые также являются моими источниками для этого ответа.
Оболочка представляет собой слой над ядром:
Терминал имеет множество значений:
Консоль имеет много значений:
Часто операционные системы позволяют запускать несколько консолей на физической консоли (определение консоли 2). Они называются виртуальными консолями или виртуальными терминалами , и к ним можно получить доступ через комбинации ctrl+ alt+ Fx. Например, если вы хотите открыть 3-ю виртуальную консоль, вы используете комбинацию ctrl+ alt+ F3.
Консоли (определение 3) могут показаться вам анахронизмом, но экспертам должно быть удобно их использовать, поскольку существует множество ОС, которые не поддерживают GUI. Кроме того, если графический интерфейс перестает отвечать на запросы, консоль все еще может работать.
Большинство терминалов в настоящее время являются строго говоря эмуляторами терминалов . Это тип роли в работе UNIX-подобной системы и в то же время базовый интерфейс, предлагаемый системами. На самом деле все, включая графический интерфейс, строится поверх него.
В разговорной речи «терминал» может также относиться к конечным точкам в компьютерной сети со звездообразной топографией.
Консоль относится к (аппаратным) интерфейсам для терминалов. Т.е. есть серийные консоли, а в настоящее время в основном виртуальные .
Окно, условно обозначаемое как «консоль», - это оболочка, подключенная к терминалу системы через виртуальную консоль.
В те времена, когда компьютеры были дорогими, на объекте мог быть один настоящий компьютер и несколько терминалов, подключенных к нему через последовательные кабели («последовательная консоль»). Операционная система, операции и т. Д. Выполнялись на физическом компьютере, ввод и вывод выполнялись на консоли.
Вы можете переключаться между виртуальными терминалами, нажимая CTRL+ ALT+ F1(до F6): остаток тех времен.
Сегодня концепция «тонких клиентов» восходит к этому направлению, заключающемуся в централизации огромного количества ресурсов и предоставлении достаточного количества аппаратного обеспечения для обеспечения современного интерфейса на рабочем месте.
Оболочка - это «двигатель», который вы видите в терминале. Он обеспечивает взаимодействие с самой системой и добавляет полезные функции, такие как автозаполнение, переменные и т. Д.
Он переводит назад и вперед между реальной ОС / ядром, которое использует системные вызовы, и вами. Системные вызовы без оболочки немного похожи на кодирование, assembler
и оболочка по крайней мере дает вам C
.
Командная строка относится к способу обмена ввода и вывода через текстовое окно. Строго говоря, линия , в которой вы печатаете (ток) в командной строке. Метод в целом более правильно называется интерфейсом командной строки или CLI.