Интерпретатор командной строки – shell

Обработкой команд, вводимых пользователем, превращением их в последовательность системных и библиотечных вызовов занимается специальная программа, с которой непрерывно ведет диалог пользователь сразу после входа в систему. Эта программа называется интерпретатор командной строки или командная оболочка («shell»). «Оболочкой» она названа как раз потому, что все управление системой идет как бы «изнутри» нее: пользователь общается с нею на удобном ему языке (с помощью текстовой командной строки), а она общается с другими частями системы на удобном им языке (вызывая запрограммированные функции).

Таким образом, пользователь вводит с терминала строку, shell считывает ее, иногда преобразуя по определенным правилам. Получившуюся строку разбивает на команду и параметры, а затем выполняет команду, передавая ей эти параметры, т.е. запускает утилиту – программу, имя которой совпадает с именем команды. Команда, в свою очередь, анализирует параметры, выделяет среди них ключи и делает то, о чем ее попросили, попутно выводя на терминал данные для пользователя, после чего завершается. По завершении команды возобновляется работа «отступившего на задний план» командного интерпретатора – он снова считывает командную строку, разбирает ее, вызывает команду... Так продолжается до тех пор, пока пользователь не скомандует оболочке завершиться самой (с помощью управляющего символа ^D, который для shell значит то же, что и для других программ – больше с терминала ввода не будет).

Конечно, командных интерпретаторов в Linux несколько. Самый простой из них, появившийся в ранних версиях UNIX, назывался shBourne Shell – по имени автора, Стивена Борна (Stephen Bourne). Со временем его везде, где только можно заменили на более мощный, bashBourne Again Shell. Bash превосходит sh во всем, особенно в возможностях редактирования командной строки. Помимо sh и bash в системе может быть установлен zshThe Z Shell, самый мощный на сегодня командный интерпретатор (шутка ли, 22 тысячи строк документации!), или tcsh, обновленная и тоже очень мощная версия старой оболочки cshC Shell, синтаксис команд которой похож на язык программирования Си.

Имя оболочки, запускаемой для пользователя сразу после входа в систему – так называемый стартовый командный интерпретатор (login shell), – это часть пользовательской учетной записи, которую пользователь может изменить командой chsh (change shell).

Для того, чтобы узнать значение переменных Вашей среды необходимо набрать команду env. Значение переменных команды:

Home – место расположение Вашего основного каталога.

Logname – хранит имя пользователя.

Mail – хранит расположение Вашего почтового ящика.

Path – хранит список всех каталогов, которые просмотрит оболочка при поиске команд при запуске на исполнение той или иной команды. Если каталоги, хранящие команды, не включены в path, то оболочка ответит сообщением об ошибке («не обнаружено»).

PS1 (PS2) – определяет как будет выглядеть символ командной строки ($ или #).

TZ – идентифицирует текущий часовой пояс.

Shell – переменная оболочки.

Term – переменная терминала.

Какая бы задача, связанная с управлением системой, ни стояла перед пользователем Linux, она должна иметь решение в терминах командного интерпретатора. Фактически, решение пользовательской задачи – это описание ее на языке shell. А shell в свою очередь занимается только тем, что подготавливает набор параметров в командной строке (например, раскрывая шаблоны), запускает программы и обрабатывает результаты их работы. Язык общения пользователя и командного интерпретатора – это высокоуровневый u1103 язык программирования, дополненный, с одной стороны, средствами организации взаимодействия команд и системы, а с другой стороны – средствами взаимодействия с пользователем, облегчающими и ускоряющими работу с командной строкой.

Ввод и вывод

Любая программа - это автомат, предназначенный для обработки данных: получая на входе одну информацию, они в результате работы выдают другую. Хотя входящая и/или выходящая информация может быть и нулевой, т. е. попросту отсутствовать. Те данные, которые передаются программе для обработки - это ее ввод, то, что она выдает в результате работы - вывод. Организация ввода и вывода для каждой программы - это задача операционной системы. Многие команды получают информацию с так называемого стандартного входа и посылают информацию на опять же так называемый стандартныйвыход. shell организует дело так, что стандартным входом служит клавиатура, а стандартным выходом - экран.

Рассмотрим, к примеру, использование команды cat. Если в качестве параметров заданы имена файлов, cat читает данные из файлов и посылает эти данные прямо на стандартныйвыход (stdout). Поэтому при выполнении команды cat student class на экран будет выведено содержимое файла student, а следом за ним содержимое файла class. Но если команде cat не заданы имена файлов в качестве параметров, то она читает данные со стандартного входа (stdin) и посылает их на стандартныйвыход. То есть, все, что Вы будете вводить с клавиатуры, будет выведено командой cat на экран после завершения ее работы – сочетание клавиш Ctrl-d.

Команда sort, это команда сортировки, без указания аргументов сортирует информацию, поступающую со стандартного входа. Она упорядочивает строки и выдает результат на стандартный выход - экран. Пример:

$ sort

Bananas

Carrots

Apples

Нажмите Ctrl-d и Вы увидите измененный список в алфавитном порядке. В конце появится новое приглашение на ввод команд $.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: