Интерпретатор командного языка shell
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: реферати українською, реферат по физике
| Добавил(а) на сайт: Дубинкин.
1 2 3 | Следующая страница реферата
Интерпретатор командного языка shell
1. Основные понятия языка shell 1.1. Ввод-выводТри направления ввода-вывода являются выделенными - стандартный ввод, стандартный вывод и стандартный протокол. Как правило, команды берут исходные данные из стандартного ввода и помещают результаты в стандартный вывод.
Стандартные ввод, вывод и протокол можно переназначить. Обозначение
<служит для переназначения стандартного ввода (дескриптор файла 0),
>для стандартного вывода (дескриптор файла 1);
>для стандартного вывода; если файл существует, то выводимая информация добавляется к конец этого файла,
& &-закрывают соответственно стандартный ввод и вывод.
Если любой из этих конструкций предшествует цифра, то с указанным файлом будет ассоциирован дескриптор, равный указанной цифре, вместо 0 и 1 по умолчанию. Например,
2 >для стандартного протокола используется дескриптор 2, а
2 >& 1ассоциирует дескриптор 2 с файлом, ассоциированным с дескриптором 1.
... 2>protocolпереназначает стандартный протокол (дескриптор 2) в файл по имени protocol.
Чтобы переназначить стандартный протокол туда же, куда уже назначен стандартный вывод, следует употребить конструкцию
... 2>&1Важен порядок переназначения: shell производит переназначение слева направо по указанному списку. Так,
1 > xxx 2 >& 1сначала ассоциирует дескриптор 1 с файлом xxx, а затем дескриптор 2 с 1, т.е. тоже с xxx. А
2 >& 1 1 > xxxассоциирует дескриптор 2 с терминалом, а 1 - с файлом xxx.
Можно переназначить системный ввод на текущий файл:
isql - - primerЕще пример: запустить программу prog в асинхронном режиме, чтобы не надо было дожидаться его завершения, засечь время выполнения, результаты программы направить в файл prog.res, данные о времени выполнения - в файл prog.tim.
time prog > prog.res 2> prog.tim & 1.3. КонвейерКонвейер - последовательность команд, разделенных знаком |. Если после конвейера стоит ; shell ждет его завершения. Если & - то не ждет. Роль ; может играть конец строки. Смысл конвейера в том, что стандартный вывод одной команды замыкается на стандартный ввод другой. Пример конвейера - подсчитать число об(r)ектных файлов в текущем каталоге.
ls *.o | wc -l 1.4. Метасимволы, генерация имен файловМетасимволы - символы, имеющие специальное значение для интерпретатора :
? * ; & ( ) | ^ < >Однако каждый из этих символов может представлять самого себя, если перед ним стоит . Все символы, заключенные между кавычками ' и ', представляют самих себя. Между двойными кавычками (") выполняются подстановки команд (см п. 2.2) и параметров (см. п. 2.3), а символы , `," и $ могут экранироваться предшествующим символом .
После всех подстановок в каждом слове команды ищутся символы *,?, и [. Если находится хотя бы один из них, то это слово рассматривается как шаблон имен файлов и заменяется именами файлов, удовлетворяющих данному шаблону (в алфавитном порядке). Если ни одно имя файла не удовлетворяет шаблону, то он остается неизменным. Значения указанных символов:
* | любая строка, включая и пустую |
? | один любой символ |
[...] | любой из указанных между ними символов. Пара символов, разделенных знаком -, означает любой символ, который находится между ними, включая и их самих. Если первым символом после "[" идет "!", то указанные символы не должны входить в имя файла |
Строки, начинающиеся с #, трактуются как комментарии.
2.2. Подстановка результатов выполнения командВыражения можно заключать в обратные кавычки (`). Такие выражения вычисляются в месте использования. Они могут быть, например, частью строк. Пример. Пусть параметром макрокоманды является имя файла с расширением .for. Требуется удалить одноименный файл с расширением .err.
name=`ena -n $1` rm -f ${name}.errЗначение, полученное в результате выполнения команды
ena -n $1присваивается переменной name. Фигурные скобки использованы для выделения аргумента операции перехода от имени к значению. Без них .err приклеилась бы к имени.
Рекомендуем скачать другие рефераты по теме: bestreferat, сочинение.
Категории:
1 2 3 | Следующая страница реферата