В этой небольшой статье мы рассмотрим основы, необходимые для того, что бы ориентироваться в консольном мире. Мы попробуем выяснить что же такое шелл (shell), что же такое терминал (terminal) и наконец поговорим про консоль (console).
1. Хороший, плохой и злой
Шелл, терминал и консоль. Эти слова часто используются, заменяя друг друга, для того что бы описать текстовый режим взаимодействия с системой или интерфейс командной строки (Command Line Interface, CLI). Этот режим часто называют, что кстати говоря не правильно, символьный интерфейс пользователя (“character user interface”, CUI). На самом деле разница между этими тремя понятиями сегодня становится все более и более размытой. Идея о разделении этих понятий исходит из времен, когда ПК были не на столько популярны как сегодня, а ОС UNIX царила на компьютерах того времени.
- Shell – это слой или часть операционной системы, часто называемая интерпретатором. Шелл – это специальный интерфейс созданный для обеспечения взаимодействия между пользователем и ядром системы (system kernel) (грубо говоря он является частью совокупности ядра операционной системы и минимального программного обеспечения, необходимого для функционирования системы, system core). Т.е. это программное окружение обеспечивающее необходимые условия для запуска приложений. Можно выделить два типа шеллов: графический (например Windows Explorer, Finder в Mac OS X) и текстовый (например bash, sh, tsh, csh, zsh).
- Terminal – физическое (hardware) устройство ввода/вывода подсоединенное к центральному компьютеру, которое позволяет пользователю взаимодействовать с ним (ПК). Оно предназначено для ввода команд, и отображения результата выполнения команд каким либо образом (например на экране монитора, а возвращаясь в ит-средневековье это были телетайпы с присоединенным к ним принтеров для вывода информации).
- Console – терминал системного администратора. Стоит упомянуть здесь, что возможности и стоимость терминальных устройств очень сильно повлияло на развитие UNIX-систем. Первые терминалы были очень медленные и программистам приходилось писать маленькие программы, которые генерировали так же мало данных. Спасибо правилу KISS (Keep it simple stupid!; Будь проще, тупица!), которое породило тенденцию к достижению простых и, где это возможно, элегантных решений. Программы стали получать входные данные из форм в виде коротких текстовых сообщений.
2. Bash
Баш – это один из самых известных шеллов доступных во всем семействе ОС Linux. Эту программу часто называют “Bourne again shell” в честь Steven Bourn, который разработал классический шелл sh. Одной из главных особенностей всех шеллов это то, что как правило все команды являются небольшими программами, которые легко найти на своем диске. Bash – это тоже программа расположенная в каталоге /bin/bash в ОС Linux (Solaris – /usr/bin/bash, FreeBSD и OpenBSD – /usr/local/bin/bash, NetBSD – /usr/pkg/bin/bash). Некоторые команды шелла встроены в сам шелл, например cd, break, exec.
Шеллы извлекают огромную пользу из возможности доступа к потокам ввода/вывода:
- stdin – стандартный поток ввода или канал ввода трансформирующий входящие данные в компьютер (по умолчанию данные берутся с клавиатуры);
- stdout – стандартный поток вывода или канал вывода, который выводит сгенерированные командой результирующие данные либо на монитор (по умолчанию), либо например в файл;
- stderr – стандартные поток ошибок, или канал куда передаются сообщения об ошибках полученных в результате выполнения программы, по умолчанию выводятся на монитор.
Источник: linuxpeople.ru