2.3.1 Некоторые специальные команды
Разделители && и ||
Это условные разделители. При разделении двух команд с помощью && вторая команда выполнится лишь в том случае когда первая завершится успешно. При разделении команд с помощью || вторая выполнится лишь тогда когда первая закончилась неуспешно (код возврата не равен нулю).
Например при выполнении скрипта:
test –d /usr/tools && cd /usr/tools test –d /usr/tools || echo “directory doesn’t exist”вход в директорию /usr/tools будет произведен только при ее наличии, в противном случае будет выдано сообщение о ее отсутствии.
Определение функцийДля сокращения обьема шелл программ и упрощения их понимания и сопровждения шелл допускает введение и использование функций. Для опредения функции используется следующий синтаксис:
name () { list; }
где name – это имя функции, а list – список команд из которых состоит тело функции. Ниже приведен пример функции возвращающей 0 если аргумент переданный ей является директорией и 1 в противном случае.
dir_test () {
if [ -d $1 ]
then
echo “$1 is a directory”
return 0
else
echo “$1 is not directory”
return 1
fi;
}
вызов функции осуществляется следующим образом
name [ parameter … ]
например в нашем случае это можно сделать так
dir_test /usr/bin/sh
Перенаправление ввода-выводаКак было сказано выше для перенаправления ввода-вывода используються символы (> перенаправление вывода, >> перенаправление вывода с добавлением в файл и < перенаправление ввода). Кроме этого существует еще ряд конструкций, одна из которых:
<< [-] word
при этом все линии от первой и до содержащей строчку word будут использоваться как входные данные. Например:
$ cat<<mark
> These words will be printed
> the cat command until the "mark"
> word is found
> mark
These words will be printed
the cat command until the "mark"
word is found
$
Если перед строчкой word стоит минус то все символы табуляции в начале строк будут вырезаны.
Другой часто используемой конструкцией при перенаправлении ввода-вывода является:
<& цифра
>& цифра
При этом задействуется файловый дискриптор ассоциированый с указаной цифрой. В большинстве программ со стандартным вводом связан дискриптор 0, со стандартным выводом дискриптор 1, и со стандартным потоком ошибок дискриптор 2. Все программы которые работают друг с другом через пайпы по умолчанию пользуються дискрипторами 0 и 1. Наиболее часто используемые перенаправления это 1>&2 и 2>&1. Рассмотрим следующий пример из которого станет понятен смысл этих конструкций:
$ ls /no/such/file > out
/no/such/file not found
$ cat out
$
$ ls /no/such/file >out 2>&1
$ cat out
/no/such/file not found
$
первая команда пытается вывести листинг не суцествующего файла перенаправив стандартный вывод в файл out. Файл out при этом оказывется пустым т.к. сообщение об ошибке выводится в стандартный поток ошибок и появляется на терминале. Вторая команда объединяет стандартный поток ошибок со стандартным выводом который перенаправлен в файл out. При этом сообщения об ошибке попадают в файл, о чем свидетельствует команда cat.
Команда exec
exec [arg …]
Эта команда выполняет замещение текущего шела новым шелом или программой. Разница между простым запуском шела и запуском через exec становится очевидной на следующем примере:
$ ksh
$ ps
PID TTY TIME COMMAND
2125 pts/0 0:00 ksh
2094 pts/0 0:00 sh
2126 pts/0 0:00 ps
$
$ exec ksh
$ ps
PID TTY TIME COMMAND
2127 pts/0 0:00 ps
2094 pts/0 0:00 ksh
$
Команда expr
expr expression { +, -, \*, /, *, =, \>, \>=, \<, \<=, != } expression
Это очень полезная команда для выполнения арифметических операций в шелл скриптах. Например:
x=10
expr $x + 5
y=`expr $x – 10`
if expr $x \<= $y
then
echo “$x is less or equal than $y”
fi
Команда set
Эта команда используется во многих модификациях. Основное назначение – это устанавливать значение параметров. Если Вы просто запустите эту команду без аргументов то увидите все параметры вашего окружения, большинство из которых было установлено при входе в систему из файла .profile.
Наример команда:
set bob brr kab ram
установит параметры $1, $2, $3, $4 следующим образом $1=”bob”, $2=”brr”, $3=”kab”, $4=”ram”. Команда set имеет множество опций, полный список которых можно получить обратившись к man-странице (man set).
Команда trap
Команда trap ожидает приход сигналов посланных шелу (от внешних процессов или сигнал от шела вследствии неуспешного запуска программы) и выполняет их обработку.
trap [command_list] [s1 …]
Когда trap получает сигнал s1 (сигналы s2 …) она выполняет список заранее предопределенных в command_list команд. Если s1 равен 0, то команды запускаются когда шелл заканчивает свою работу. Команда trap запущенная без аргументов выдает на печать список команд ассоциированных с каждым из номеров сигналов. Ниже приведен краткий список наиболее часто используеиых сигналов.
Номер сигнала | Описание | Возможность перехвата |
1 | сигнал перезапуска | Есть |
2 | Прерывание процесса | Есть (если процесс не в фоне) |
3 | Сигнал выхода | Есть (если процесс не в фоне) |
6 | Сигнал завершения | Есть |
9 | “Убиение” процесса | Не може быть перехвачен в принцыпе |
14 | Сигнал таймера | Нет |
15 | Програмный сигнал завершения процесса | Есть |
Попытка перехватить 11-й сигнал (memory fault) приводит к ошибке. Сигнал с номером 9 не может быть перехвачен т.к. он не перехватывается в принципе.
Очень часто возникает ситуация когда скрипт в процессе работы создает временные файлы которые затем нужно удалить, но в случае прерывания процесса какимто из сигналов эти файлы не будут удалены. Эта проблема решается в следующем примере:
trap “echo ‘removing temporaty file’ rm /tmp/temp” 0 1 2 3 15
Команда pwd
Эта команда показывает текущую рабочую директорию.
Команда type
type [ prog_name …]
Эта команда ищет каталог в котором находится запускаемая программа указанная в аргументе команды.
Команда times
Эта команда выдает информацию о времени выполнения процесса запущеного из шелла.
Параметры устанавливаемые шелломПараметр | Описание |
$# | Количество аргументов командной строки |
$? | Значение кода возврата предыдущей команды |
$$ | Номер процесса шела в системе |
$! | Номер процесса в системе последней команды запущеной в фоне |
Основные опции для запуска Bourn Shell
Опция | Описание |
-с string | Выполнять команды из файла string |
-s | Выполнять команды полученные со сотандартного ввода (в случе запуска шела без опций он ведет себя также) |
-r | Запустить шелл в ограниченном режиме (restricted mode) |
При запуске шела в restricted mode запрещается:
· Изменение директории командой cd
· Устанавливать переменную окружения PATH
· Запускать программы содержащие в имени символ /
· Перенаправлять ввод-вывод
2.3.1 Общие сведения.
2.3.2 История команд
2.3.3 Алиасы, подстановка команд, метасимволы
2.3.4 Переменные csh
2.3.5 Задания
2.3.6 Скрипты
2.3.7 Управляющие структуры скриптов.
2.3.1 Общие сведения.
csh это командный интерпретатор HP-UX и язык программирования высокого уровня используемый для трансляции команд вводимых пользователем в системные действия такие как запуск программ, перемещение по директориям файловой системы, управление информационными потоками между программами. csh в отличии от Bourne Shell имеет ряд дополнительных полезных возможностей
· Буфер истории команд
· Механизм алиасов
· Расширеный, С-подобный командный язык
Выход из шелла может осуществляться несколькими способами: по команде exit (либо logout если это логин шелл) и также в зависимости от переменной окружения ignoreoff если она не установлена, то по комбинации клавиш Ctrl-D.
Запуск шелла
В зависимости от того является ли csh Вашим логин-шеллом возможны различные сценарии его запуска. При запуске csh проверяет файлы:
/etc/csh.login Если csh это логин-шелл и этот файл существует, то он
выполняется
.cshrc Если этот файл существует в вашем домашем каталоге,
то он выполняется в любом случае.
.login Если csh это логин-шелл и этот файл существует в
домашнем каталоге то он выполняется
.logout Если этот файл существует в домашнем каталоге, то он
выполняется всякий раз при выходе из шелла если это
логин-шелл
Установка переменных
Существуют два типа переменных которые могут быть устаовлены в .cshrc и .login, это локальные переменные, которые не передаются дальше порождаемым из шелла процессам и носят название локальных переменных и глобальные переменные, которые становяться доступными всем процессам порожденным из шелла и носят название переменных окружения. Локальные переменные устанавливаются командой set , глобальные – командой setenv.
... доступа к информации. Поэтому очень важно, чтобы сети были защищены от постороннего вмешательства. Построение локальных сетей предусматривает создание программно-аппаратных решений с целью защиты информации от кражи. Для этого производится установка, настройка и обслуживание фаерволов, маршрутизаторов и коммутаторов. Обслуживание локальных компьютерных сетей должно проводиться непрерывно. ...
... надёжность системы, данный стандарт с успехом применяется в магистральных каналах связи. Сравнительный анализ существующих технологий представлен в Приложении А. 2. АНАЛИЗ И КОМПЛЕКС МЕРОПРИЯТИЙ ПО ОБСЛУЖИВАНЮ ЛОКАЛЬНОЙ СЕТИ СЛУЖБЫ ПО ДЕЛАМ ДЕТЕЙ СЕВЕРОДОНЕЦКОЙ ГОРОДСКОГО СОВЕТА 2.1 Административные, технические и программные характеристики Службы по делам детей Северодонецкой городской рады ...
... концентратора, требуется также сетевой кабель, так называемый двужильный провод Ethernet RJ-45 (10BaseT или 100BaseT), который немного больше обычного телефонного кабеля. 3. Создание локальной сети 1. Обнаружение параметров сети. 2. Выбираем параметры настроек. 3. Задание корня DNS-имени ZALMAN. local. 4. Настраиваем IP-адрес и адрес DNS-сервера. 5. Локальные ...
... разнообразием активного коммутационного оборудования, которое применяется для локальных и глобальных связей. В данном разделе были рассмотрены стандарты беспроводного доступа к сети Интернет. Так же был рассмотрен вопрос о назначении локальной сети. 2. Конструкторская часть 2.1 Выбор и обоснование технологий построения ЛВС Исходя из технического задания, для связи рабочих станций в ...
0 комментариев