Администрирование локальных сетей
Рефераты >> Программирование и компьютеры >> Администрирование локальных сетей

2.4.3 Грамматика шеллов

Как и Bourne Shell новые шеллы поддерживают пайпы,перенаправления ввода-вывода, последовательное выполнение команд используя разделители а также запуск программ в фоновом режиме. Единственное что стоит отметить это поддержка двунаправленных пайпов (co-process) которые будут рассмотрены позже.

Механизмы квотинга спецсимволов и расширения имен файлов посредством метасимволов в новых шеллах полностью аналогичны рассмотренным в Bourne Shell. Единственное что следует упомянуть, так это метасимволы ~ , # и % , свойства которых не были описаны раньше.

· метасимвол # используется для задания комментариев. Все что следует за ним игнорируется интерпретатором комманд.

· метасимвол ~ используется при раскрытия путей к файлам и директориям. При этом используются следующие правила:

тильда сама по себе или тильда до слеша / обозначает путь к домашнему каталогу (переменная окружения $HOME)

тильда до знака + раскрывается в текущий каталог (переменная окружения $PWD)

тильда до знака – раскрвывается в предыдущий рабочий каталог (переменная $OLDPWD)

и наиболее полезное правило: если после тильды идет строчка а затем слеш / то выполняется проверка вхождения этой строки в файл пользователей системы ( /etc/passwd ). В случае если эта сточка совпадает с именем пользователя из этого файла то результатом такого расширения пути станет домашний каталог пользователя взятый из этого файла.

· Метасимвол % используется при управлении заданиями и будет рассмотрен позднее.

2.4.4 Алиасинг

Механизм алиасинга в новых шелах аналогичен Csh.

alias -выводит список всех установленных алиасов alias word=command - устанавливает алиас word на команду command

unalias word - снимает алиас word

unalias -a - снимает все алиасы

alias –x word=command - устанавливает алиас word на команду command с экспортом (только для ksh)

Отличительной особенностью ksh от POSIX Shella является возможность экспорта алиасов в другой шелл который не вытесняет текущий (для запуска используется системный вызов fork() на не exec как например в случае если скрипт начинается с #!/bin/…)

2.4.5 Возможности подстановок

К новым подстановкам параметров не рассмотреным при рассмотрении Bourne Shell можно отнести

${parameter#pattern} Если шаблон pattern равен началу параметра

${parameter##pattern} parameter , то вырезать из параметра этот шаблон и результат присвоить выражению. В первой форме шаблон вырезается до первого совпадения, во второй – до последнего.

${parameter%pattern} Если шаблон pattern равен окончанию параметра

${parameter%%pattern} parameter , то вырезать из параметра этот шаблон и результат присвоить выражению. В первой форме шаблон вырезается до первого совпадения, во второй – до последнего.

2.4.6 Командная строчка и история команд

Установив переменную окружения VISUAL на один из системных текстовых редакторов (vi, emacs, gmacs) можно получить возможность редактировать строку ввода используя команды выбраного редактора. При этом помимо редактирования текущей команды, можно выполнять перемещение по истории команд (клавиши ESC j ,ESC k). По умолчанию история команд хранится в файле .sh_history однако его можно изменить установив переменную окружения $HISTFILE . Количество хранимых команд определяется переменной $HISTSIZE. Двойное нажатие на клавишу ESC помогает раскрывать имена файлов в каталогах.

2.4.6 Управление заданиями

Задания в ksh и POSIX Shell имеют тот же смысл что и рассмотренные ранее в csh. Для управления заданиями испльзуется команда jobs . Запущенная без параметров она показвывает список заданий. Иногда возникает необходимость отложить на некоторое время выполнение текущего задания. Этого можно добиться послав сигнал SIGSTOP текущему процессу. Этого можно добиться комбинацией клавиш: Cntrl-Z.

Примечание: предварительно (обычно это ставиться в startup скриптах шеллов) должна быть выполнена команда stty susp <Cntr-Z> которая связывает эту комбинацию клавиш с посылкой сигнала SIGSTOP процессу (генерация символа suspend).

Для перевода отложеного (приостановленого задания) в фоновый режим нужно воспользоваться командой bg

bg %job_number перевод задания с номером job_number в фоновый режим

bg %% перевод текущего задания фоновый режим

bg %+ перевод текущего задания фоновый режим

bg перевод текущего задания фоновый режим

bg %- перевод предыдущего задания фоновый режим

Для возврата задания в интерактывный режим нужно использовать команду fg. Синтаксис ее полностью аналогичный команде bg.

Встроенная в шелл команда kill допускает использования тех же аргументов что и bg и fg для посылки сигналов заданиям.

2.4.7 Программирование скриптов

Все основные управляющие структуры ksh и POSIX Shell полностью повторяют аналогичные в Bourne Shell. Поэтому остановимся более подробно на новых возможностях предоставляемых этими шелами.

Команда select

select parameter in words

do

command_lines

done

Эта команда помогает организовать интерактивный диалог. Она выводит список слов words в виде меню с возможностью выбора, а после выбора пользователем элемента списка она запускает команды из списка command_lines , при этом выбранное пользователем слово доступно командам из списка как параметр parameter.

Двунаправленные пайпы

Korn Shell имеет в своем арсенале механизм позволяющий порождать процессы-потомки соединенные пайпом с родительским шеллом. Стандартный ввод и стандартный потомка может быть доступен из родительского шела. Для создания двунаправленого пайпа нужно использовать конструкцию |& после запускаемой команды.Доступ к пайпу из скрипта может быть получен посредством команд print –p и read –p . Рассмотрим пример использования двунаправленых пайпов:

#!/usr/bin/ksh

bc |&

read a b

print -p "$a * $b"

read -p mul

echo $mul

Замечания:

Использование двунаправленых пайпов оправдано лишь с командами которые работают с устройствами стандартного ввода и вывода, но не напрямую с терминалом (как например редактор vi).

Не существует способа закрыть двунаправленный файл, поэтому в них нельзя использовать команды требующие вначале получения символа конца файла EOF (например программа sort) прежде чем выдать результат.

Команда typeset (только в Korn Shell)

typeset [-option ] [name[=value]] …]

Эта команда создает переменную, назначает ей значение и определяет ее тип. Основные опции команды:

-i переменная name имеет тип integer

-r переменная name является readonly

-l конвертировать все символы с верхнего регистра в нижний

-u конвертировать все символы с нижнего регистра в верхний

-x автоматический експорт переменной

-R выравнивание текста по правому краю

-L выравнивание текста по левому краю

Команда let

Эта команда практически аналогична команде expr в Bourne Shell и используется для вычисления в простых математических выражениях. Пример использования:


Страница: