В чем разница этих понятий (оболочка, терминал, консоль и командная строка) в Linux?

В чем разница этих понятий (оболочка, терминал, консоль и командная строка) в Linux?

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

решение1

Shell — это программа, которую вы используете для взаимодействия с компьютером, это может быть интерфейс командной строки или интерфейс point and click. Bash — это оболочка, как и Gnome2 и т. д.

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

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

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

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

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

решение2

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

Ну, по крайней мере, с этимологической точки зрения.

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

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

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

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

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

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

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


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

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

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

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

Переработано изЮникс и Линукс

решение3

хорошо,

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

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

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

пример: подключение по ssh.

  • Вы открываете терминал.
  • выполните команду: ssh[email protected]
  • оболочка — это то, что фактически запускает команду ssh, запускает клиент ssh
  • этот клиент будет подключаться через intarwebs к серверу ssh
  • Когда вы вводите «whoami» в терминале, оболочка запускает SSH-клиент, поэтому она знает, что команда должна быть отправлена ​​на сервер. На другом конце сети сервер выполняет эту команду, отправляет результат обратно в вашу оболочку, а терминал выводит на рабочий стол красивое, удобное для чтения изображение.

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

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

решение4

КакЖильнаписал нааналогичный вопрос на Ask Ubuntu:

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

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

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

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

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

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

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

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

Связанный контент