Командный интерпретатор SHELL
Продолжительность работы:4 часа.
Цель работы:изучение основных команд и операторов командного интерпретатора SHELL, получение практических навыков составления сценариев в среде SHELL.
Краткие теоретические сведения
Почти любое используемое человеком изобретение обладает интерфейсом, посредствам которого осуществляется взаимодействие. Интерфейсом для Linux служит командный интерпретатор или оболочка (shell), являющаяся программным уровнем, который обеспечивает среду для ввода команд и параметров для получения желаемого результата.
Оболочка обеспечивает интерфейс между пользователем и основой Linux – ядром. Оболочка интерпретирует командные строки в качестве ввода, осуществляет подстановку имен файлов и переменных, переназначает ввод и вывод, отыскивает исполняемые файлы, инициирует и взаимодействует с программами.
То есть, во-первых: с помощьюShell запускаются все программы и команды, поэтому, можно сказать, что она устанавливает рамки в которых работает операционная система. Этому посвящена первая часть лабораторной работы.
Во-вторых, оболочка является мощным языком программирования. Оболочка создает дочерние процессы и может управлять их выполнением. Она поддерживает переменные среды каждого пользователя.
Существует несколько «оболочек» shell. Разница между ними не очень значительна. В данной лабораторной работе мы будем рассматривать оболочку Bash (Bourne Again Shell).
Запуск и выход из оболочки
Программа Bourne Again Shell запускается командой bash. Под Linux вы можете запустить Bourne Again Shell и при помощи команды sh. Как правило, когда вы входите в систему, указывая свой пароль, автоматически запускается shell. Этот интерпретатор имеет специальное назначение и называется Login shell. Однако это та же самая программа.
Большинство программ закрываются путем ввода специальных команд exit, bye или quit. Редко встречаются варианты, в которых действуют все три команды, однако почти всегда хотя бы одна из них годится для выхода из программы. Программа Bourne Shell принимает команды exit и bye. Кроме того, довольно часто из программы shell можно выйти, введя символ конца файла при помощи комбинации клавиш Ctrl+D. Интерпретатор Login Shell можно закрыть также командой logout.
Интерпретация командной строки
При входе в систему запускается специальная версия оболочки, называемая интерактивной оболочкой, отображается приглашение, обычно в форме знака доллара ($), процента (%) или фунта (#). При вводе строки в ответ на это приглашение оболочка пытается интерпретировать ее. Ввод в ответ на приглашение оболочки иногда называют командной строкой. Основной формат командной строки выглядит следующим образом: имя команды опции аргументы
Имя Команды - это исполняемая команда Linux, программа, утилита или программа оболочки.
Опции начинаются с тире и влияют на исполнение всей команды.
Аргументыпередаются исполняемому модулю (например, имена файлов).
Последовательное выполнение команд (символ ;)
В одной командной строке вы можете указать несколько команд. Эти команды должны быть разделены символом ;(точка с запятой) или символом & (амперсанд): command1; command2; command3<enter>
Система Linux выполняет команды в том порядке, в котором они стоят в командной строке, и печатает вывод этих команд в том же порядке. Этот процесс называется последовательным выполнением.
Например, введите:
cd; pwd; ls<enter>
Shell выполнит эти команды последовательно:
· cd изменит ваше местоположение, переместив вас в регистрационный каталог;
· pwd распечатает полное имя пути вашего текущего каталога;
· ls перечислит файлы в вашем текущем каталоге.
Специальные символы
Shell имеет также и другие символы, которые выполняют различные полезные функции.
3.1. Поиск всех символов (метасимвол *)
Метасимвол * заменяет любое число символов (в том числе и ноль символов)
3.2. Поиск по одному символу (метасимвол ?)
Метасимвол ? заменяет любой символ.
3.3. Отмена специального значения (метасимвол \)
Символ \ позволяет вам отменить специальное значение следующего за ним символа. Например, у вас есть файл trail, который содержит следующий текст:
The all * game
Чтобы найти символ звездочка (*) в файле, употребите команду grep:
grep \* trail<enter>
Команда grep найдет символ * в тексте и отобразит строку, в которой она появилась. Без символа \, символ звездочка будет интерпретироваться shell как метасимвол.