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

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

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

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

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

Терминал

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

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

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

Приставка

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

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

Командная строка [интерфейс]

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

Ракушка

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

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

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

Оболочки командной строки включают в себя конструкции управления потоком для объединения команд. В дополнение к вводу команд в интерактивном приглашении пользователи могут писать сценарии. Наиболее распространенные оболочки имеют общий синтаксис, основанный на Борн_шелл. При обсуждении “программирование оболочки”, оболочка почти всегда подразумевается как оболочка в стиле Борна. Некоторые оболочки, которые часто используются для написания сценариев, но не имеют расширенных интерактивных функций, включают оболочка Korn (ksh) и многие пепел варианты. Практически в любой Unix-подобной системе установлена оболочка в стиле Bourne как /bin/sh, обычно ash, ksh или bash. На Ubuntu, /bin/sh является Тире, вариант ash (выбран потому, что он быстрее и использует меньше памяти, чем bash).

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


Разделение труда между терминалом и оболочкой не совсем очевидно. Вот их основные задачи.

  • Ввод: терминал преобразует клавиши в управляющие последовательности (например Left\e[D). Оболочка преобразует управляющие последовательности в команды (например \e[Dbackward-char).
  • Версия строки, история ввода и завершение предоставляются оболочкой.
    • Вместо этого терминал может предоставить свою собственную версию строки, историю и завершение и отправить строку в оболочку только тогда, когда она будет готова к выполнению. Единственным распространенным терминалом, который работает таким образом, является M-x shell в Emacs.
  • Вывод: оболочка выдает такие инструкции, как “display foo”, “переключите цвет переднего плана на зеленый”, “переместите курсор на следующую строку” и т.д. Терминал действует в соответствии с этими инструкциями.
  • Подсказка - это чисто концепция оболочки.
  • Оболочка никогда не видит выходные данные команд, которые она выполняет (если только они не перенаправлены). История вывода (прокрутка назад) - это чисто терминальная концепция.
  • Копирование и вставка между приложениями обеспечивается терминалом (обычно с помощью мыши или последовательностей клавиш, таких как Ctrl+Shift+V или Shift+Insert). Оболочка также может иметь свой собственный внутренний механизм копирования-вставки (например Meta+W и Ctrl+Y).
  • Контроль работы (запуск программ в фоновом режиме и управление ими) в основном выполняется оболочкой. Однако именно терминал обрабатывает такие комбинации клавиш, как Ctrl+C чтобы завершить работу на переднем плане и Ctrl+Z чтобы приостановить его.

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