В чем различия этих понятий (Shell, Terminal, Console и Command-line) в Linux?

4

Будучи новичком, эти три понятия: Shell, Terminal, Console и Command-line в последнее время меня сильно озадачили. Особенно Консоль и Терминал?

user3872279
источник
1
Смотрите эту ветку в AskUbuntu, она должна вам ответить.
Valmiky Arquissandas
Извините, что вы имели в виду консоль.
Vdub
Честно говоря, вы обычно не объединяете клиента с этими концепциями, хотя многие современные эмуляторы терминалов действительно реализуют клиентов. Например, putty использует протокол ssh для включения соединения между терминалом и оболочкой, запущенной на удаленном сервере.
Фрэнк Томас,
проверить это видео: youtube.com/watch?v=07Q9oqNLXB4&list=PLFAC320731F539902
iffy

Ответы:

4

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

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

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

В современном использовании клиент (из модели клиент / сервер для вычислений) - это часть программного обеспечения, которая подключается к услуге и использует ее. Ваш веб-браузер является клиентом для HTTP-сервисов. Для подключения к серверу Samba или Windows вам необходим клиент Samba. Эмулятор терминала по удаленной ссылке часто использует клиент, такой как telnet или ssh или hyperterm, для удаленного подключения. Клиенты обычно подключаются с использованием сети в качестве носителя и передают сообщения на основе протокола связи (например, HTTP).

Термин Клиент также может относиться к оборудованию, но встречается реже, за исключением нескольких нишевых областей. В старые времена, когда вы брали автономную систему и подключали ее к сети, она становилась клиентом в этой сети. здесь также есть такие термины, как Thin-client (бездисковый компьютер, на котором запущено программное обеспечение удаленно) и Thick-client (автономный ПК с собственной ОС, ЦП, ОЗУ и дополнительным хранилищем). Обычно из контекста можно определить, ссылается ли оратор на аппаратное устройство (ПК / сервер / и т. Д.) Или на конкретный программный клиент.

надеюсь, что это поможет уточнить.

Фрэнк Томас
источник
1

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

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

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

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

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

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

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

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

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


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

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

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

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

жилль
источник
0

в порядке,

shell: запускает команды в интерфейсе командной строки. это программа, которая знает, что делать (какие программы вызывать), когда вы пишете что-то вроде "cd", "grep" и так далее. обычно вы увидите, что он также называется bash или zsh (самый распространенный). оболочка также запускает прямой скрипт (обычно .sh файлы, хотя расширение не обязательно)

терминал: графическое окно (обычно) для запуска реальной оболочки. имеет дополнительные колокольчики, такие как вкладки, шрифты, размер строки X col и так далее. Терминал может быть определен для запуска оболочки вам нравится

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

пример: соединение с ssh.

  • Вы открываете терминал.
  • запустите команду: ssh someuser@some.domain
  • оболочка - это то, что фактически запускает команду ssh, запускает клиент ssh
  • этот клиент будет подключаться через intarwebs к серверу ssh
  • когда вы набираете «whoami» в терминале, оболочка запускает ssh-клиент, поэтому она знает, что команда должна быть отправлена ​​на сервер. На другом конце сети сервер запускает эту команду, отправляет результат обратно в вашу оболочку, и терминал создает на рабочем столе красивое, удобочитаемое изображение.

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

это очень упрощенное представление, но без подробностей, это просто об этом.

deimosaffair
источник
0

Как Жиль писал на похожий вопрос в Ask Ubuntu :

  1. Терминал = среда ввода / вывода текста
  2. Консоль = физический терминал
  3. Shell = интерпретатор командной строки

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

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

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

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

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

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

Если вы Google, вы найдете много полезной информации по этому вопросу.

Vdub
источник
Третий срок ОП был клиентом, а не консолью.
RobH
Мне всегда приятно помнить, что TTY означает Touch Tone Yoke; устройство, на котором вы физически размещали свой телефонный приемник с тональным набором для связи между компьютером и коммутируемым соединением. это очень 80-х годов. smecc.org/essco_communications/…
Фрэнк Томас,
Метафора, стоящая за «оболочкой», такая же, как и за «ядром»: пользователи могут прикоснуться к внешней стороне системы, тогда как планирование процессов, управление памятью и т. Д. Находятся настолько далеко, насколько это возможно. У Юникса было игривое детство.
Aecolley
1
@Vdub: оказывается , что вы скопировали большую часть этого ответа от Gilles «s ответ на Unix и Linux вопрос, Что такое точное различие между„Терминал“, а„оболочки“, а„телетайп“и„консоли“ ?   Вы используете чужую работу, не отдавая должное автору. Это равносильно плагиату и не приветствуется в Super User / Stack Exchange. Не забывайте всегда добавлять заметную атрибуцию при использовании других источников.
G-Man
Плагиат это не круто . (@ G-Man Спасибо за заголовок, приятно видеть, что моя работа ценится, но, конечно, было бы лучше, если бы ее приписали. На самом деле он скопировал из версии Ask Ubuntu, где я немного подправил текст. )
Жиль