Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив2 / курсовая docx525 / Kursovaya_po_OS.docx
Скачиваний:
12
Добавлен:
07.08.2013
Размер:
55.05 Кб
Скачать

2.2. Как Shell находит команды.

Обычно интерпретатор Shell ищет команды, которые требуется выполнить в трех конкретных местах файловой системы. Сначала Shell пытается использовать имя команды в том виде, как оно указано. Если команда не найдена, то к имени добавляется /bin. Если это не помогает, по добавляется /usr/bin. Это означает, что поиск по порядку производится сначала в текущем каталоге, затем в каталоге /bin и после этого в каталоге /usr/bin. Например, команды pr и man могут быть на самом деле файлами с полными именами /bin/pr и /usr/bin/man. Можно указывать и более сложные пути для того, чтобы или поместить файл в конкретное место относительно текущего каталога пользователя, или чтобы обращаться к команде по ее полному имени. Если в команде имеется косая черта (/) (например /bin/sort dir/cmd), то к имени никаких путей для поиска добавляться не будет.

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

3.Пример работы интерпретатора Shell.

Ниже приводится фрагмент программы Shell, связанный с обра-

боткой сигналов.

:

#

# Установка подпрограмм обработки сигналов

#

trap "echo

trap "echo

trap "echo

#

# Замечание: Если вы перешли в другой каталог, вы можете

# сбросить прерывание SIGQUIT с обнаружением файла "core".

# Для этого вставьте соответствующую строку после команды

# cd.

#

trap "echo

echo " Going into loop0

while true

do

cd /tmp

trap "echo

lf

cd /usr

trap "echo

lf

sleep 1

done

echo " Leaving the loop 0

exit 0

4.Специальные команды Shell.

Существует несколько специальных команд, являющихся внутрен-

ними для Shell. Некоторые из них мы уже рассмотрели. Интерпрета-

тору не требуется создавать под оболочку для выполнения этих ко-

манд и следовательно не создаются дополнительные процессы. Эти

команды рекомендуем использовать везде, где это возможно, т.к.

они работают быстрее и эффективнее, чем другие команды UNIX.

Некоторые из специальных команд мы уже рассмотрели, т.к. они

влияют на управление процессами. Это точка (.), break, continue,

exit и trap. Команда set также является специальной командой.

Описание остальных специальных команд приводится ниже:

: - Пустая команда. Она не делает ничего и может

использоваться для вставки комментариев в

процедуры. Ее код завершения равен 0 (true).

Все аргументы, передаваемые команде :, про-

веряются на синтаксические ошибки. Если вы-

дается сообщение об ошибке, заключите эти

аргументы в кавычки. Подстановка параметров

выполняется как и для любых других команд.

cd arg - Делает arg текущим каталогом. Если arg не

является каталогом или у пользователя нет

права доступа к нему, команда завершается с

ненулевым кодом завершения. Указание cd без

аргументов эквивалентно вводу "cd $HOME",

что возвращает вас в каталог загрузки.

exec arg - Если arg является командой, то Shell выпол-

няет ее, не создавая под оболочки. В команд-

ной строке допускаются аргументы переадреса-

ции ввода-вывода. Если указаны только аргу-

менты, перенаправляющие ввод-вывод, то

изменяются только ввод-вывод самого интерп-

ретатора Shell.

hash [-r] name - Этой командой запоминается место в пути по-

иска команды, указанной в name. Опция -r

указывает Shell, что старые значения можно

стереть. Если никаких аргументов не указыва-

ется, то выводится информация о запомненных

командах. Hits - это количество раз, которое

команда вызывалась Shell. Cost - это мера

затрат, необходимых для нахождения команды.

Бывают ситуации, требующие пересчета места

расположения команды.

newgrp arg - Команда newgrp при выполнении создает новый

интерпретатор Shell, который заменяет ста-

рый. Помните, что в новом Shell будут опре-

делены только переменные системы. Все пере-

менные, которые раньше были помечены как

экспортируемые, теперь станут обыкновенными.

pwd - Печатает текущий каталог.

read var - Из стандартного ввода считывается одна стро-

ка и первое слово интерпретируется как зна-

чение первой переменной, второе - как значе-

ние второй, и т.п. Все оставшиеся считанные

слова присваиваются последней переменной.

Код завершения равен нулю, если не был счи-

тан символ конца файла.

readonly var - Указанные переменные помечаются как пригод-

ные только для чтения, так что никаких после-

дующих переприсвоений им сделать нельзя. Если

никаких аргументов не указано, то выводится

список всех помеченных таким образом перемен-

ных и переменных, которые экспортируются.

return n - Вызывает возврат из функции с кодом заверше-

ния, равным n. Если n не указано, то код за-

вершения равен коду завершения последней вы-

полненной команды.

times - Печатает суммарное время, использованное

пользователем и процессами, запущенными из

текущей оболочки.

type name - Для каждого указанного имени показывает, как

оно будет интерпретироваться в случае, если

будет использоваться в качестве имени команды.

ulimit [ -f] n - Эта команда устанавливает предел размера за-

писываемого файла равным n блоков. Флаг -f

устанавливает этот предел для файлов, записы-

ваемых дочерними процессами (считываться мо-

гут файлы любого размера). Команда, указанная

без аргумента, показывает текущий установлен-

ный предел.

umask nnn - Устанавливает маску для создания файлов поль-

зователя равной nnn. Если nnn отсутствует, то

печатается текущее значение маски. Эта бито-

вая маска используется для установки прав

доступа к файлам при их создании. Например,

значение маски, равное восьмеричному числу

137, соответствует следующей битовой маске и

правам доступа для создаваемого файла:

------------T----------T------T------

¦ ¦пользоват.¦группа¦другие¦

+-----------+----------+------+------+

¦восьмеричн.¦ 1 ¦ 3 ¦ 7 ¦

+-----------+----------+------+------+

¦бит. маска ¦ 001 ¦ 011 ¦ 111 ¦

+-----------+----------+------+------+

¦доступ ¦ rw- ¦ r- ¦ -— ¦

L-----------+----------+------+-------

unset name - Для каждого указанного имени удаляет соответ-

ствующую переменную или функцию. Переменные

PATH, PS1, PS2, MAILCHECK и IFS удалить нельзя.

wait n - Shell ждет завершения всех активных дочерних

процессов. Если n указано, то Shell ждет за-

вершения только указанного процесса. Код за-

вершения команды wait всегда равен 0, если не

указан аргумент n, в противном случае он ра-

вен коду завершения дочернего процесса n.

Соседние файлы в папке курсовая docx525