Будучи новичком, эти три понятия: Shell, Terminal, Console и Command-line в последнее время меня сильно озадачили. Особенно Консоль и Терминал?
4 ответа
Оболочка - это программа, которую вы используете для взаимодействия с компьютером, это может быть интерфейс командной строки или интерфейс «укажи и щелкни». Bash - это оболочка, как и Gnome2 и т.д.
Терминал - это загруженный термин в современных вычислениях. это происходит со старых времен мэйнфреймов, когда вы печатали на аппаратном устройстве, подключенном непосредственно к мэйнфрейму (тонкому клиенту, имеющему только клавиатуру и монитор). Аппаратный терминал взаимодействовал с программной оболочкой, работающей на мэйнфрейме. После того, как компьютеры и другие небольшие системы с толстыми клиентами появились, мы начали использовать программное обеспечение эмулятора терминала, которое делало бы вид, что наш толстый клиент был просто терминалом тонкого клиента, подключенным к мэйнфрейму, и позволяло нам подключаться удаленно. Именно здесь такие вещи, как приложения CICS, нашли свою нишу.
В современном смысле «терминал» linux, такой как gnome-terminal
является эмулятором терминала, запускающим оболочку в локальной системе. Главное, что на терминале всегда находится оболочка, и вы используете терминал для доступа и взаимодействия с оболочкой, будь то аппаратный или программный терминал.
В современном использовании клиент (из модели клиент / сервер для вычислений) - это часть программного обеспечения, которая подключается к услуге и использует ее. Ваш веб-браузер является клиентом для HTTP-сервисов. Для подключения к серверу Samba или Windows вам необходим клиент Samba. Эмулятор терминала по удаленному каналу связи часто использует клиент, такой как telnet, ssh или hyperterm, для удаленного подключения. Клиенты обычно подключаются с использованием сети в качестве носителя и передают сообщения на основе протокола связи (например, HTTP).
Термин «Клиент» также может относиться к оборудованию, но встречается реже, за исключением нескольких нишевых областей. В старые времена, когда вы брали автономную систему и подключали ее к сети, она становилась клиентом в этой сети. здесь также есть такие термины, как Thin-client (бездисковый компьютер, на котором запущено программное обеспечение удаленно) и Thick-client (автономный ПК с собственной ОС, ЦП, ОЗУ и дополнительным хранилищем). Как правило, из контекста можно определить, ссылается ли оратор на аппаратное устройство (ПК / сервер / и т.д.) Или на определенный программный клиент.
надеюсь, что это поможет уточнить.
Терминал находится на конце электрического провода, оболочка - дом черепахи, 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-подобная система имеет оболочку в стиле Bourne, установленную как /bin/sh
, обычно ash, ksh или bash.
В системном администрировании Unix оболочка пользователя - это программа, которая вызывается при входе в систему. Обычные учетные записи пользователей имеют оболочку командной строки, но пользователи с ограниченным доступом могут иметь ограниченную оболочку или некоторые другие специальные команды (например, для учетных записей только для передачи файлов).
Разделение труда между терминалом и оболочкой не совсем очевидно. Вот их основные задачи.
- Ввод: терминал преобразует ключи в управляющие последовательности (например, влево →
\e[D
). Оболочка преобразует управляющие последовательности в команды (например,\e[D
→backward-char
). - Строчная редакция, история ввода и завершение обеспечиваются оболочкой.
- Терминал может предоставить свою собственную версию строки, историю и завершение взамен, и отправлять строку в оболочку только тогда, когда он готов к выполнению. Единственный общий терминал, который работает таким образом, это
M-x shell
в Emacs.
- Терминал может предоставить свою собственную версию строки, историю и завершение взамен, и отправлять строку в оболочку только тогда, когда он готов к выполнению. Единственный общий терминал, который работает таким образом, это
- Вывод: оболочка выдает такие команды, как «display
foo
», «переключить цвет переднего плана на зеленый», «переместить курсор на следующую строку» и т.д. Терминал действует по этим инструкциям. - Подсказка - это просто концепция оболочки.
- Оболочка никогда не видит вывод команд, которые она выполняет (если не перенаправлена). Выходная история (прокрутка) является чисто терминальной концепцией.
- Копирование-вставка между приложениями обеспечивается терминалом (обычно с помощью последовательности клавиш мыши или клавиш, таких как Ctrl+Shift+V или Shift+Insert). Оболочка также может иметь свой собственный внутренний механизм копирования-вставки (например, Meta+W и Ctrl+Y).
- Управление заданиями (запуск программ в фоновом режиме и управление ими) в основном выполняется оболочкой. Тем не менее, это терминал, который обрабатывает комбинации клавиш, такие как Ctrl+C, чтобы убить задание переднего плана и Ctrl+Z, чтобы приостановить его.
Переработано с Unix и Linux
в порядке,
shell: запускает команды в интерфейсе командной строки. это программа, которая знает, что делать (какие программы вызывать), когда вы пишете что-то вроде "cd", "grep" и так далее. обычно вы увидите, что он также называется bash или zsh (наиболее распространенный). оболочка также запускает прямой скрипт (обычно это файлы .sh, хотя расширение не обязательно)
терминал: графическое окно (обычно) для запуска реальной оболочки. имеет дополнительные колокольчики, такие как вкладки, шрифты, размер строки X и т. д. терминал может быть определен для запуска оболочки, которая вам нравится
клиент: ничего общего с остальным. в любом приложении с архитектурой клиент / сервер (веб-сайт, ssh-соединение, программа управления базой данных, многопользовательская игра) клиент - это то, с чем вы взаимодействуете, и он отправляет заказы на сервер.
пример: соединение с ssh.
- Вы открываете терминал.
- запустите команду: ssh someuser@some.domain
- оболочка - это то, что фактически запускает команду ssh, запускает клиент ssh
- этот клиент будет подключаться через intarwebs к серверу ssh
- когда вы набираете "whoami" в терминале, оболочка запускает ssh-клиент, поэтому она знает, что команда должна быть отправлена на сервер. На другом конце сети сервер запускает эту команду, отправляет результат обратно в вашу оболочку, и терминал создает на рабочем столе красивое, удобочитаемое изображение.
переключиться на игру: "терминал" - это симпатичный интерфейс, "оболочка" - это внутренности, которые знают, что делать с щелчками и нажатиями клавиш, "клиент" - это сам игровой движок, отправляющий туда и обратно материал для сервер, так что все игроки могут счастливо фрагментировать друг друга без лагов :)
это очень упрощенное представление, но без подробностей, это как раз об этом.
Как Жиль писал на похожий вопрос в Ask Ubuntu:
- Терминал = среда ввода / вывода текста
- Консоль = физический терминал
- Shell = интерпретатор командной строки
Консоль и терминал тесно связаны. Первоначально они имели в виду оборудование, которое позволяло бы вам взаимодействовать с компьютером. (…) В терминологии Unix терминал - это особый тип файла устройства, который реализует ряд дополнительных команд (ioctls), помимо чтения и записи. Некоторые терминалы, иногда называемые псевдо-терминалами или псевдо-терминалами, предоставляются (через тонкий слой ядра) программами, называемыми эмуляторами терминалов. Некоторые типы эмуляторов терминала включают в себя:
- Приложения с графическим интерфейсом, работающие в X Window System: Xterm, Gnome Terminal, Konsole, Terminator и т.д.
- Screen и tmux, которые обеспечивают уровень изоляции между программой и другим терминалом.
- Ssh, который соединяет терминал на одной машине с программами на другой машине.
- Ожидайте, для сценариев терминальных взаимодействий.
(…) Консоль - это, как правило, терминал в физическом смысле, который по определению является первичным терминалом, напрямую подключенным к машине. Консоль представляется операционной системе как (реализованные в ядре) терминалы. В некоторых системах, таких как Linux и FreeBSD, консоль выглядит как несколько терминалов (ttys) (специальные комбинации клавиш переключают между этими терминалами); просто чтобы запутать вопросы, имя, данное каждому конкретному терминалу, может быть «консоль», «виртуальная консоль», «виртуальный терминал» и другие варианты.
(…) Командная строка - это интерфейс, в котором пользователь вводит команду (которая выражается в виде последовательности символов - обычно это имя команды сопровождается некоторыми параметрами) и нажимает клавишу Return, чтобы выполнить эту команду.
Оболочка - это основной интерфейс, который пользователи видят при входе в систему и который предназначен для запуска других программ. (Я не знаю, является ли первоначальная метафора тем, что оболочка является домашней средой для пользователя, или что оболочка - это то, в чем работают другие программы.)
В кругах Unix оболочка специализировалась на командной оболочке, сосредоточенной вокруг ввода имени приложения, которое нужно запустить, затем имен файлов или других объектов, с которыми должно работать приложение, и нажатия клавиши Enter. Другие типы окружений (за исключением недавнего исключения из Gnome Shell) обычно не используют слово «оболочка»; например, оконные системы включают «оконные менеджеры» и «среды рабочего стола», а не «оболочку».
Если вы Google, вы найдете много полезной информации на эту тему.