Рефераты по компьютерным наукам

РОССИЙСКИЕ КОМПЬЮТЕРНЫЕ СЕТИ.
ВВЕДЕНИЕ.
Слово "Internet" несколько лет назад было известно лишь узкому кругу
специалистов по компьютерным сетям, а сегодня оно не сходит с полос компьютерных
газет и журналов, часто встречается в неспециализированных изданиях и звучит в
передачах телевидения и радио...
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ЮЖНО – РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ
(НОВОЧЕРКАССКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ)
Факультет: Информационных Технологий и Управления
Кафедра: Автоматики и Телемеханики
Специальность: Промышленная электроника
РЕФЕРАТ
ПО ИНФОРМАТИКЕ
На тему: ПРОГРАММНЫЕ СРЕДСТВА ИНТЕРНЕТ
Выполнил студент I – 1б Джумайлов
А. ...
Введение

Человечество во все времена стремилось облегчить не только свой физический труд, но и интеллектуальную деятельность, в частности математические расчеты и вычислительные процессы, постоянно выполняемые человеком в быту, в процессе хозяйственной деятельности.
Механические средства для счета и вычислений были известны в далеком прошлом. ...
C О Д Е Р Ж А Н И Е .
Часть 1...
СОДЕРЖАНИЕ

1. Введение
2...
Введение.

На сегодняшний день в мире существует более 130 миллионов компьютеров и более 80 % из них объединены в различные информационно-вычислительные сети от малых локальных сетей в офисах до глобальных сетей типа Internet. ...
Непрекращающийся рост Internet и частных сетей предъявляет новые требования к пропускной способности. ...
ОБЩЕЕ ПРЕДСТАВЛЕНИЕ О ПРОГРАММЕ
Новая версия 3.11 программы Microsoft Windows for Workgroups (далее WFWG) считается наиболее удачной универсальной версией широко известной и популярной операционной среды. ...
Содержание
1. Архитектура “клиент-сервер”
1.1...
Что такое Internet
Internet – это обширная, разветвленная сеть, объединяющая компьютеры, расположенные в самых отдаленных точках Земли. ...
Аннотация.
В дипломном проекте было разработано абонентское устройство для проведения видеоконференция в сетях INTERNET со следующими входными параметрами: стандартный цифровой компонентный цифровой сигнал формата ITU-R 601/25 и выходными – стандартный компонентный цифровой сигнал формата ITU-R 601/25. ...
1. Общий обзор архитектуры UNIX систем.

Краткий обзор UNIX подобных операционных систем.

В даный момент, не существует стандартной системы UNIX, вместо этого вы столкнетесь со множеством операционных систем, имеющих свои названия и особенности. Но за этими особенностями и названиями прослеживается общая архитектура, интерфейс и среда программирования. Все эти системы так или иначе являются родственными Из-за своей простоты, ясности, легкой способности к расширению и модификации UNIX стали переносить на множество платформ. Однако несмотря на множество реализаций базовой системы, среди всех них можно четко выделить две основные ветки: System V UNIX и BSD UNIX. Различия между ними не носят принципияльный характер и зачастую сказать к какой из веток принадлежит та или иная реализация операционной системы бывает сложно. К основным различиям между System V и BSD подобными системами можно отнести терминальную инициализацию, имена конфигурационных файлов и файлов инициализации системы, стандартный размер блоков файловой системы, управление терминалами, различное отображение информации о процессах и.т.п. Одним словом принципиальных различий с точки зрения пользователя между разными ветками операционной системы UNIX не существует. Рассматриваемая нами операционная система HP-UX 10.20 является одной из реализаций UNIX выпущенной фирмой Hewlett-Packard. По своей структуре это чистая System V подобная 32-х разрядная операционная система, включающая поддержку симметричных многопроцессорных систем (SMP), файловых систем большего объема (до 128Гб) и расширенного виртуального адресного пространства (до 3.75 Гб).

Основные причины популярности UNIX.

Каковы же причины популярности этой операционной системы ? В первую очередь это более чем трех десятилетний возраст. За этот период она полностью прошла проверку временем. Во вторых код системы практически полностью написан на языке высокого уровня С, что сделало ее простой для понимания, внесения изменений и переноса на другие аппаратные платформы. Некоторые из версий UNIX поставляются вместе с исходными текстами, однако даже несмотря на то что большинство UNIX поставляется в виде бинарных файлов, система все равно остается легко расширяемой и настраиваемой. Так же следует отметить тот факт что UNIX в изначально создавалась как многопользовательская и многозадачная система ориентированная в первую очередь на выполнение серверных функций. Следует отметить и тот факт что UNIX практически изначально создавалась как сетевая операционная система (даже графическая оболочка UNIX система X Window является полностью сетевой), что позволило ей занять лидирующие позиции на рынке серверов для Интернет приложений и дало мощные встроенные средства удаленного администрирования. Не маловажную роль в популярности UNIX сыграла ее единая иерархическая файловая система с унифицированным доступом не только к файлам данных но и к аппаратным ресурсам таким как диски, терминалы, принтеры, сеть, память и.т.п.

Структура операционной системы.

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



Рис 1.1

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

Задачи выполняемые ядром операционной системы

Остановимся более подробно на структуре ядра операционной системы. Функционально его можно представить состоящим из трех основных подсистем: подсистемы управления процессами и памятью, подсистемы ввода-вывода и файловой подсистемы. Все современные микропроцессоры поддерживают виртуальную память, защищенный и многозадачный режим работы. Последний подразумевает выделение кванта процессорного времени определенной задачи с последующим переключением на другую задачу
Каждая задача имеет идентификатор уровня защиты, некоторые команды из системы команд процессора могут выполняться на любом уровне защиты, но есть привелигированные команды выполнение которых возможно лишь задачей имеющей нулевой уровень привилегии. Ядро операционной системы работает на нулевом уровне защиты, только оно имеет непосредственный доступ к физической памяти, системным регистрам процессора и портам ввода вывода. Пользовательские программы общаются с ядром посредством системных вызовов, представляющих собой команду приводящую к переключению процесса в контекст ядра, передачей параметров ядру. Затем ядро проверяет корректность параметров, права пользовательского процесса на возможность выполнения данного системного вызова и лишь после этого переходит к непосредственному выполнению всех низкоуровневых действий необходимых для исполнения пользовательского запроса. Благодаря этому достигается защита критически важных данных ядра от случайного или преднамеренного разрушения со стороны пользователя.
Второй из важнейших функций ядра является обработка исключительных ситуаций возникающих в результате работы операционной системы и представляющим собой програмные прерывания. К последним относятся ошибки защиты (на пример попытка прикладной программы получить доступ к портам ввода-вывода или чужой области памяти), ошибки в работе оборудования, а также системные события возникающие при нормальной работе операционной системы. Некоторые из исключительных ситуаций приводят к аварийному завершению системы (ошибки оборудования или исключительная ситуация возникшая во время обработки исключительной ситуации), некоторые к аварийному завершению пользовательской программы при этом возможен сброс на диск в файл образа процесса вызвавшего исключительную ситуацию c целью дальнейшего анализа отладчиком, а некоторые просто жизненно необходимы для нормального функционирования операционной системы (одна из таких исключительных ситуаций будет рассмотрена ниже).

Подсистема управления процессами.

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

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

Подсистема управления памятью управляет выделением, размещением и освобождением памяти для прикладных задач. Прикладные программы никогда не используют физическую память напрямую, т.к. все современные операционные системы реализуют так называемую виртуальную память объем которой может превышать объем физической памяти. При этом задействуется механизмы страничной адресации памяти в которых все виртуальное адресное пространство разделяется на небольшие блоки – страницы. Размер страницы варьируется в зависимости от архитектуры, для архитектуры HP PA-RISC это 2К, для Intel это 4K. Каждая страница имеет специальные атрибуты которые определяют права доступа к ней, факт присутствия в физической памяти, частоту обращений и.т.п. Преобразование из виртуального адреса в физический осуществляется аппаратно. Данная схема адресации дает ряд неоспоримых преимуществ которые используются всеми современными операционными системами. А именно: возможность экономии физической памяти путем совместного использования одних и тех же страниц виртуальной памяти разными процессами, реализация разделяемой памяти, а также возможность использования вторичных устройств в качестве устройств памяти что позволяет задачам задействовать виртуальной памяти больше чем есть реально физической памяти в системе. Реализуется это следующим образом: в случае нехватки физической памяти, ядро сбрасывает на внешний носитель (как правило диск) страницы к которым наиболее долго не было обращений, а так же при обращении к странице которой реально нет в физической памяти процессор генерирует исключительную ситуацию обработчик которой загружает страницу обратно с внешнего носителя в физическую память. Этот процесс носит название пейджинг или свопинг.

Файловая подсистема.

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

Подсистема ввода-вывода.

Подсистема ввода-вывода обслуживает запросы файловой подсистемы и подсистемы управления процессами для доступа к периферийным устройствам (сетевые адаптеры, диски, терминалы …). Также она обеспечивает буферизацию и кеширование данных и взаимодействует с драйверами устройств – специальными модулями ядра непосредственно работающими с внешними устройствами.
2.
Шеллы и основные команды HP-UX.

2.1.1 Общее знакомство с шелами
2.1.2 Смена шела
2.2.1 Bourne Shell
2.2.1.1 Основные возможности Shell.
2.2.1.2 Shell скрипты
2.2.1.3 Основы программирования на языке shell
2.2.1.4 Некоторые специальные команды

Общее знакомство с шелами

Шелл это интерфейс между операционной системой и пользователем. Шелл интерпретирует пользовательский ввод и дает указания операционной системе выполнить те или иные действия. Шелл можно также рассматривать как язык программирования.

Bourne Shell. Это самый старейший из шелов который был написан Стэфаном Борном в Лаборатории Беэлла. Этот шелл является шелом по умолчанию для HP-UX пользователей и долгое время был стандартом де факто.
Bourne Shell не имеет в своем арсенале ни интерактивных возможностей ни сложных программных конструкций в отличии от С и Korn шеллов.

C Shell. Этот шел был разработан Биллом Джоем в Калифорнийском Университете Беркли. Его синтаксис имеет сходство с языком программирования С. Он также имеет интерактивный интерфейс например историю команд и раскрытие имен файлов.

Korn Shell. Он является относительно новым шелом разработанным Девидом Корном в Лаборатории Бэлла и является вверх совместимым с большинством возможностей Bourne Shell. Так же как и С shell он имеет интерактивные возможности, но выполняется быстрее имеет расширенные возможности редактирования командной строки.

POSIX shell. Этот шелл базируется на стандарте определенном в Portable Operation System Interface (POSIX) – IEEE P1003.2. Этот стандарт был разработан для прикладных и системных программистов. Он фактически определяет стандарт на интерфейс операционной системы. Большинство возможностей POSIX Shell очень сильно схожи с аналогичными возможностями Korn Shell-a. Мы будем рассматривать оба этих шела едино, указывая лишь небольшие различия между ними. POSIX Shell имеет тоже имя что и Bourne Shell поэтому он помещен в /usr/bin/posix директорию в отличии от Bourne Shell, который находится в директории /usr/bin.

Key Shell. Это оболочка для Kourn Shell-a разработанная фирмой Hewlett-Packard. Она позволяет использовать меню и онлайн помощь помогая в построении команд и выполнению ряда часто встречаемых задач, таких как просмотр, редактирование и печать файлов, просмотр содержимого директории и.т.п. Построена она таким образом что пользователь может сам в дальнейшем
расширять ее возможности.

Bash. Название этого шела расшифровывается как Bourne Again Shell. Он бы разработан консорциумом Free Software Foundation и несмотря на то что по умолчанию он отсутствует в стандартной поставке HP-UX 10.20, в следствии своих мощных функциональных возможностей он пользуется огромной популярностью среди пользователей и администраторов HP-UX. Его интерпретатор команд совместим с Bourne Shell. Также он вместил в себе полезные возможности Korn C шеллов. Он разрабатывался в сооответствии со спецификациями IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).

2.1.2 Смена шела

Для того чтобы определить Ваш системный шелл достаточно сразу после логина выполнить команду:

echo $SHELL

она показывает содержимое переменной SHELL в которую система прописывает Ваш шелл установленный по умолчанию. Для временной смены шела достаточно выполнить запуск желаемого шела в текущем:

$ ksh запуск Kourne Shell
$ ps печать списка процессов
PID TTY TIME COMMAND
12320 pts/2 0:00 sh Bourne shell
12322 pts/2 0:00 ksh Korn Shell
12323 pts/2 0:00 ps
$ exit выход из Korn Shell-a

Для постоянной смены шела устанавливаемого системой после входа (login shell) необходимо выполнить команду:

chsh <ваш_логин> <полное_имя_шела>

Замечание: список шелов доступных в системе для пользователей находится в файле /etc/shells

Bourne Shell.

2.2.1.1 Основные возможности Shell.

Запуск шелла и выход из шелла

Для запуска Bourne Shell достаточно ввести sh в текущем шеле. Выход из шела возможен либо по команде exit либо введя в терминале символ коца файла Ctrl-D.

Последовательное выполнение команд.

Несколько команд можно последовательно выполнять разграничивая точкой с запятой. Например, фрагмент

$ who
$ ps –ef
$ ls –l
и
$ who; ps –ef; ls -l
дадут полностью одинаковый результат.

Фоновое выполнение.

Запуск программы в фоновом режиме (без блокировки текущего шела) достигается добавлением в конец команды знака &

Перенаправление ввода-вывода.

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

Символ Функция Пример
< Перенаправление ввода из файла program < in_file
> Перенаправление вывода в файл program > out_file
>> Перенаправление вывода в файл с добавлением Program >> out_file
Пайпы. Две или более программ могут быть объединены таким образом что результат одной программы попадет на вход другой. При этом данные от одной программы к другой следуют через програмный канал, например:

program1 | program2 | program3

или более реалистичный пример:

ls –l /etc | more

Примечание: пайпы всегда работают лишь в одном направлении – со стандартного выхода одной к стандартному входу другой программы.

Расширение имен файлов.

В целях уменьшения количества набираемых символов при вводе имен файлов шел поддерживает метасимволы. Нпример для того чтобы вывести листинг всех файлов в текущей директории имена которых начинаются с буквы a достаточно воспользоваться командой ls –l a*

ниже приведена таблица основных метасимволов

Метасимвол Описание
* Означает любой символ в любом количестве
~ Означает путь к домашнему каталогу
? Любой символ в количестве один или больше
[ … ] Равенство любого одного из символов заключенных в скобки. Пара символов разделенная знаком минус означает любой символ из промежутка между ними. Например [a-zA-Z] – любаялатинская буква


2.2.1.5 Shell скрипты

Выполнение скриптов.

Несколько команд обьедененных одной последовательностью выполнения называется скриптом. Например последовательное выполнения команд, пайпы являются простейшими скриптами. Обычно команды из которых состоят скрипты сохраняют в файлах. Для запуска скрипта можно воспользоваться двумя методами:

sh <имя_файла_скрипта>

или установить атрибут выполняемости на файл командой

chmod +x <имя_файла_скрипта>

После чего можно выполнять скрипт:

./<имя_файла_скрипта>

Вывод текста.

Для формирования вывода текстовой информации в скриптах используют команду

echo “строка”

Файл.profile.

Каждый раз во время входа в систему Bourne Shell автоматически запускает файл.profile (скрипт) находящийся в вашей домашней директории. Этот скрипт устанавливает “окружение” в котором Вам предстоит работать. Это различные переменные окружения отвечающие за вид системной подсказки, путь поиска исполняемых файлов, тип терминала и.т.п. Приведем список основных переменных окружения.

* PATH устанавливает путь поиска исполняемых файлов и представляет собой набор директорий разделенных двоеточием
* MAIL определяет имя файла почтового ящика для уведомления о приходе новой электронной почты
* MAILCHECK параметр показывающий как часто (в секундах) следует проверять почтовый ящик на предмет прихода новой почты
* HOME определяет домашний каталог (каталог по умолчанию). Команда cd без параметров выполняет переход в этот каталог.
* PS1 основная системная подсказка (по умолчаию $)
* PS2 вторичная системная подсказка (по умолчанию >)
* SHELL имя логин шелла пользователя
* TERM тип терминала пользователя
* EDITOR имя текстового редактора по умолчанию

Устанавливать переменные окружения можно по разному. Например команды

PATH=/bin:/usr/bin:/usr/sbin:/usr/contrib/bin:/usr/local/bin
и

PATH=/bin:/usr/bin:/usr/sbin
PATH=$PATH: :/usr/contrib/bin:/usr/local/bin

полностью эквивалентны. Для того чтобы эти переменные вошли в системное окружение (кроме шела, стали доступны и другим программам) необходимо выполнит команду

export <имя_переменной>

Комментарии.

Текст следующий за символом # рассматривается шелом как комментарий и не оказывает никакого влияния на работу скрипта.

Основы программирования на языке shell

Параметры.

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

$ x=test
$ echo $x
test

$ aaa=/
$ ls $aaa

cdrom home nsmail tcb var
SD_CDROM dev lib opt tmp
TT_DB etc lost+found sbin tmp_mnt
Bin export net stand usr

При включении параметров в строку или в выражение знак $ должен предшествовать параметру. Также необходимо пользоваться следующими правилами:

${parameter} значение параметра заключенного в скобки будет использовано в выражении. Скобки {} используются когда за параметром следуют буквы или цифры не относящиеся к парамаметру. Например если значение параметра xxx равно test то значение выражения ${xxx}123 будет равняться test123

${parameter:-word} если параметр установлен и не пустой то результатом выражения будет являться значение параметра, в противном случае в результате будет использовано значение параметра word. Например: ${xxx:-/usr/bin/sh}
если xxx пустой то результатом выражения будет являться строка /usr/bin/sh

${parameter:=word} если параметр неустановлен или пустой, тогда значение word будет результатом выражения.
${parameter:+word} если параметр установлен и не пустой, тогда результатом выражения является word, в противном случае результат пустой.

Аргументы командной строки.

Когда Вы запускаете на выполнение программы, Вы можете передавать ей один или больше аргументов. Шелл скрипты имеют доступ к этим аргументам посредством параметров $0, $1, $2 …$9. Если аргументов больше девяти, их значения помещаются в буффер и могут быть доступны с использованием команды shift которая будет обсуждаться ниже. Параметр $0 всегда принимает значение имени выполняемого файла, $1 – первого аргумента командной строки, $2 – второго, и.т.п.
Количество агрументов командной строки всегда можно узнать проанализировав параметр $#. В том случае если Вам необходим один параметр содержащий все аргументы командной строки разделенные пробелом нужно воспоьзоваться параметром $*.
Для получения доступа к аргументам с номером больше девяти необходимо воспользоваться командой shift. После очередного выполнения команды shift происходит сдвиг на один элемент в буффере параметров в результате которого значение параметра $2 получает параметр $1, значение параметра $3 получает $2, и.т.п. Используя цикл (цыклы будут рассвотрены ниже) в сочетании с командой shift можно получать доступ ко всем аргументам командной строки с номерами превышающими 9.

Квотинг.

Очень часто случаются ситуации когда необходима особая трактовка тех символов которые шелл воспринимает как спец символы. Например случай когда строку текста включая пробелы нужно передать как один аргумент или знак $ должен не быть воспринят как указатель на параметр. Для этих целей используется квотинг (quoting).
Например символ бекслэша ( ) можно использовать для квотинга символа $.
$ param=aaa
$ echo $param
aaa

$ echo $param
$param

В сочетании с бекслэшем для квотинга можно использовать двойные кавычки. Например:

echo "$param is a "new directory""
aaa is a "new directory"

При этом знак $ внутри двойных кавычек интерпретируется как указатель на параметр а бэкслэш используется для “экранирования” внутренних кавычек.

Одинарные кавычки также можно использовать для квотинга но в отличии от двойных они “экранируют” все что находится внутри них. Разница сразу становится понятной после замены в предыдущем примере двойных кавычек однираными:

$ echo '$param is a "new directory"'
$param is a "new directory"

Подстановка команд.

Символ обратного ударения ( ` ) используемый в скриптах указывает на подстановку команд. Это подразумевает что результат вывода команды подставляется в шелл как параметр. Нпример:

$ echo "The current date is `date`"
The current date is Sat Jan 6 04:16:35 GMT 2001
или

$ users=`who`
$ echo "Users currentrly logged in the system:n $users"
Users currentrly logged in the system:
root console Jan 6 03:57
roman pts/0 Jan 5 23:12

Условия.

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

if test –f $1
then
sort $1
else
echo “file $1 doesn’t exist”
fi

Условный оператор имеет следующий синтаксис:

if <список_комманд1>
then <список_комманд2>
elif <список_комманд3>
then <список_комманд4>
…..
else <список_коммандN>
fi

Оператор if проверяет статус выполненной команды (в данном примере test –f)
И в случае успеха (программа возвращает 0) выполняет команды стоящие после then, в противном случае выполняются команды else/elif.

Наиболее часто используемой командой в оператореусловия является команда test. Она имеет множество опций, полный список которых можно получить обратившись к ее документации выполнив команду man test.Очень часто вместо команды test используют команду [ которая является ее фунуциональным аналогом. Здесь приводится лишь краткий список основных опций команды test.

-r file возвращает успех если файл существует и доступен для чтения.

-w file возвращает успех если файл существует и доступен для записи.

-x file возвращает успех если файл существует и выполняемый.

-f file возвращает успех если это регулярный файл.

-d file возвращает успех если это директория.

-c file возвращает успех если это специальный файл.

-s file возвращает успех если файл имеет ненулевой размер.

-h file возвращает успех если это симлинк.

-z s1 возвращает успех если длинна строки s1 нулевая.

-n s1 возвращает успех если длинна строки s1 ненулевая.

s1 = s2 проверка двух строк на равенство.

s1 != s2 проверка двух строк на неравенство

s1 возвращает успех если строка s1 непустая

n1 -eq n2 Алгебраическая проверка двух чисел n1 и n2 на
равенство. Помимо –eq есть еще ряд опций для алгебраического
сравнения такие как -ne, -gt, -ge, …

Все вышеперечисленные условия могут обьеденяться с использованием логических операторов:

! отрицание

-a Бинарный И

-o Юинарный ИЛИ (-а имеет приоритет больший чем –о)

( expr ) Группировка выражений скобками

Ввод данных.

Для ввода иданных в скрипт можно воспользоваться командой

read [parameter …]

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

Примечание: знак $ перед именем параметра в команде read ставить не нужно.

Циклы.

Очень часто при составлении скриптов простого последовательного выполнения бывает недостаточно. Необходимы механизмы которые позволяли бы выполнять команды с изменяющимися параметрами. Для этих целей шелл предоставляет в распоряжение три цикличекие конструкции: циклы for,while и untill.

Цыкл for

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

for parameter [ in wordlist ]
do command-list
done

где parameter это любое имя параметра, wordlist – один или несколько значений последовательно присваиваемых параметру, command-list – набор команд выполняемых при каждом проходе цикла. wordlist может быть либо просто набором аргументов разделенных пробелом, либо командой шелла которая генерирует сама аргументы. Например следующий скрипт:

for i in 1 2 3 4 5
do
if mkdir $i
then
echo “directory $i was created”
fi
done

создает последовательно директории с именами 1 2 3 4 5 и в случае успешного создания директории выдает сообщение. Следующий скрипт:

for i in `ls a*`
do
cp $i /tmp
echo “$i was copied”
done

копирует все файлы начинающиеся с буквы a из текущего каталога в каталог /tmp.

Цикл while

while command-list1
do command-list2
done

этот цикл запускает команды из списка command-list1, и если последняя команда из списка выполнилась успешно (код возврата равен 0) то начинают выполняться команды из списка command-list2, в противном случае цикл заканчивается. Цикл из следующего примера:

while [ -r $1 ]
do
echo “processing $1”
cat $1 >> summary
shift
done

по очереди считывает аргументы командной строки, в случае когда в текущем каталоге присутствует файл доступный на чтение с именем совпадающим с этим аргументом, содержимое этого файла дописывается к файлу с именем summary. В противном случае, скрипт прекращает свою работу.

Цикл util

until command-list1
do command-list2
done

конструкция этого цикла полностью аналогична циклу while за исключением того что тело цикла (набор команд command-list2) выполняется как минимум один раз не зависимо от успешности выполнения условия цикла (набор команд command-list1).

Оператор case

Оператор case является расширением стандартного условного оператора if. Если есть условие при котором может реализовываться множество вариантов то вместо серии операторов if лучше использовать один case.

case parameter in
pattern1 [ | pattern2 …] ) command-list1 ;;
pattern2 [ | pattern3 …] ) command-list2 ;;

esac

шаблоны pattern определяют варианты параметра parameter. При совпадении параметра с одним из шаблонов будет выполнен соответствующий список команд command-list. В квадратных скобках ([ | pattern2…] ) указаны дополнительные варианты разделенные символом ( | ) которые может принимать parameter помимо основного. Заканчивается список шаблонов скобкой. Более понятней структура этого оператора станет после рассмотрения примера:

case $i in
-d | -c ) mkdir dir1
echo “directory dir1 was created” ;;
-r ) rmdir dir1
echo “directory dir1 was removed” ;;
* ) echo “invalid option” ;;
esac

В этом примере скрипт получив при запуске один из аргументов –d или –c попытается создать директорию с именем dir1, получив аргумент –r попытается ее стереть. Во всех остальных случаях (шаблон *) он выдаст предупреждение о неправильном аргументе.

Примечание: обратите внимание на то что порядок следования гшаблонов в операторе case имеет большое значение. Так если строку

* ) echo “invalid option” ;;

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

Команда. (точка)

Каждый раз когда Вы запускаете шелл программы, создается еще одна копия шелла в которой они выполняются. Поэтому если Вы написали шелл скрипт, то все переменные “живут” только во время выполнения скрипта. Если вы хотите чтобы все переменные из шелл программы были в вашем текущем окружении запускать скрипт нужно в текущем шеле, это достигается использованием команды. (точка).

. scriptname

Команда eval
eval [arg...]

Аргументы читаються и соединяются в одну команду. Затем эта команда выполняется шеллом и статус выхода команды возвращается как результат команды eval. Если аргументы в команде отсутствуют или пустые то команда возвращает нулевой статус.
В качестве примера рассмотрим два скрипта:

d=’date &’ ; $d
и
d=’eval date &’ ; $d

первый из них не выполнится так как команда date воспримет символ & как аргумент а не как признак запуска в фоновом режиме, в результате чего первый скрипт не выполнится в отличии от второго.

Использование метасимволов.

Во всех конструкциях циклов и операторе case возможно использование метасимволов. Например скрипт из примера оператора цикла for

for i in `ls a*`
do
cp $i /tmp
echo “$i was copied”
done

можно переписать в более простом виде

for i in a*
do
cp $i /tmp
echo “$i was copied”
done

результат будет один и тот же.

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< > 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
* Запускать программы содержащие в имени символ /
* Перенаправлять ввод-вывод


C Shell.

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.3.2 История команд

csh поддерживает так называемый буфер команд в котором храняться последние введенные команды называемые событиями. Размер буфер определяет переменная history. Переменная savehistory определяет сколько команд буфера подлежит сохранению перед выходом из шела. Наиболее оптимальным размером буфера считается буфер на 10 … 20 команд. Просмотр буфера возможен по команде history. Подстановка команд из буфера осуществляется с использованием символа восклицательного знака ( ! ). Переменная prompt отвечает за вид системоной подсказки.

Например, выполнив команду:

% set prompt='[!] % '
[2] %

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

* По номеру события: !n где n – это номер события в буфере
* Относительному номеру события относительно текущего события: !-n
* Тексту события: !word где word – первые несколько символов события. Например набрав один раз команду history, в следующий раз можно использовать вместо этого команду !h.

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

csh также допускает использование аргументов команд находящихся в буфере при посторении новых команд. Каждый аргумент в событии хранящемся в буфере нумеруется начиная с нуля (нулевой аргумент – имя самой команды). Последний аргумент еще представляется знаком ( $ ), первый аргумент знаком ( ^ ). Для ссылки на на аргумент события нужно после номера события через двоеточие ( : ) ввести номер аргумента или его обозначение. Например:

cruiser 4: ls -l.cshrc
-rw-r--r-- 1 roman users 814 Jan 2 23:08.cshrc

cruiser 5: history
1 ls -l.profile
2 history
3 cat.profile
4 ls -l.cshrc
5 history

cruiser 6: cat !4:$
cat.cshrc
#
# Default user.cshrc file (/usr/bin/csh initialization).
set path=( $path )
# Set up C shell environment:
if ( $?prompt ) then # shell is interactive.
set history=20 # previous commands to remember.
set savehist=20 # number to save across sessions.
set system=`hostname` # name of this system.
set prompt = "$system !: " # command prompt.
endif

2.3.3 Алиасы, подстановка команд, метасимволы

csh предоставляет дополнительные удобства в виде командных алиасов. Например, вместо того чтобы каждый раз при необходимости вывести полный листинг директории или при выходе из шелла набирать набирать полные команды, можно создать их сокращенные псевдонимы (dir и x):

alias dir ls –als
alias exit x

для снятия алиаса нужно воспользоваться командой unalias :

unalias dir

чтобы просмотреть список всех алиасов имеющихся в данный момент нужно ввести команду alias без параметров.

Подстановка команд

Подстановка команд в csh выполняется полностью аналогично подстановке в Bourne Shell рассмотреной перед этим:

cruiser 7: set dir=`pwd`
cruiser 8: echo $dir
/home/roman
cruiser 9:

Метасимволы

Все етасимволы включая синтаксические ( ; | () & || && ) а так же файловые ( ? * [] ~ ) и метасимволы квотинга ( ‘ “ ) в csh имеют тот же смысл что и рассмотренные перед этим в Bourne Shell.

2.3.4 Переменные csh

Имя переменной Описание
$argv Список аргументов командной строки
$autologout Авто логаут если шеллом не пользовались спустя количеству секунд указанному в этой переменной. Неустановленное или нулевое значение отключает авто логаут.
$cwd Указатель текущей рабочей директории
$home Домашняя директория
$ignoreeof Если переменная установлена, то гнорировать символ конец файла (Ctrl-D) как символ завершения работы
$noclobber Если переменная установлена, то запретить перенаправление вывода в существующий файл (операция > ). Перенаправление возможно лишь с использованием операции >!
$notify Если переменная установлена то посылать немендленные уведомления после окончания фоновых процессов
$path Путь для поиска выполняемых файлов. При изменении этой переменной нужно уведомить шелл выполнив команду rehash
$prompt Вид системной подсказки
$status Код возврата самой последней команды


Цифровые переменные csh

Команда at ( @ ) назначает цифровой переменной арифметическое значение, точно так же как и команда set назначает значение стороковой переменной. Значением цифровых переменных являются десятичные целые.

% @ sum=( 1 + 2 )
% echo $sum
3

Основные арифметические операции в csh

Операция Описание
( ) Скобки изменяют порядок выполнения операций
+ Сложение
- Вычитание
* Умножение
/ Деление
% Остаток от деления

Основные логические операции в csh

Операция Описание
== Проверка на равенство
!= Пооверка на неравенство
! Логическое отрицание

Кроме этих операций есть еще ряд логических операций которые должны быть взяты в скобки и их операнды должны ьыть разделены пробелами в виде ( operand1 >= operand2 )

Операция Описание
> Больше
< Меньше
>= Больше или равно
<= Меньше или равно
>> Правый битовый сдвиг
<< Левый битовый сдвиг
& Битовое И
| Битовое ИЛИ
&& Логическое И
|| Логическое ИЛИ

Например:

% @ r= ( 2 << 4 )
% echo $r
32

Основные операции присвоения в csh

Операция Описание
= Простое рисвоение а = b
+= a = a + b
-= a = a - b
*= a = a * b
/= a = a / b
%= a = a % b

Постфиксные операции

К последним относятся операции ++ и --

% @ a=10
% @ a++
% echo $a
11

Основные файловые операции

Виражения в csh могут возвращать значение в зависимости от наличия или отсутствия файла, прав доступа к нему, и.т.п. Для этого используется следующий синтаксис:

-file_test filename

где file_test и filename могут принимать следующие значения
file_test описание
d Является ли файл директорией ?
e Существует ли файл ?
f Это обычный файл ?
o Являюсь ли я его собственником ?
r Имеются ли права на чтение из файла ?
w Имеются ли права на запись в файл
x Можно ли исполнять этот файл ?
Z Пустой ли файл

2.3.5 Задания

Каждый раз когда одна или больше команд (например связанные через пайп, или последовательно) выполняються шелл создает один блок команд назывемый заданием. Фактически каждая строка введенная в строке шелла является заданием. Задание может исполняться также в фоновом режиме если при запуске в конце стоял символ &. В этом случае после запуска шелл выдаст номер задания в своей таблице заданий и номер процесса. Просмотреть таблицу активных в данный момент заданий можно воспользовавшись командой jobs. После завершения фонового процесса шелл проинформирует пользователя об этом.

% sleep 10 &
[1] 73059

% jobs
[1] + Running sleep 10

% ps
PID TTY TIME COMMAND
71453 pts/2 0:00.03 -sh (csh)
73059 pts/2 0:00.00 sleep 10
73061 pts/2 0:00.00 ps

…. Спустя 10 секунд ….

%
[1] Done sleep 10

2.3.6 Скрипты

сsh крипты могут как и Bourne Shell скрипты быть запущены двумя способами. Либо

csh script_file arg1 arg2 ….

либо установив атрибут исполняемости на файл и запустив его

chmod +x script_file
./script_file arg1 arg2 ….

При этом первая строчка должна содкржать полный путь к интерпретатору с префиксом #!, в нашем случае она должна выглядеть так: #!/usr/bin/csh. Без этой строчки система в качестве интерпретатора скрипта запустит Bourne Shell что приведет к ошибке.
При запуске csh помещает аргументы скрипта в массив argv доступ к которым возможее через argv[1], argv[2], … Аргумента argv[0] не существует, вместо этого имя скрипта помещается в аргумент $0.
Для проверки установлена ли данная переменная можно воспользоваться конструкцией

$?variable

Чтобы узнать сколько значений хранит переменная нужно использовать следующий синтаксис:

$#variable

Для доступа к компонентам переменной необходимо следовать следующему правилу:

$variable[componet_number]

Также как и в Bourne Shell возможно использование переменных $n вместо argvn и $* вместо $argv. В отличии от команды read в Bourne Shell csh использует конструкцию $< для интерактивонго ввода.

Все вышесказанное иллюстрируется на следующих примерах:

% echo $#var1
var1: Undefined variable.

% set var1=a
% echo $#var1
1

% set var1=(a b c)
% echo $#var1
3

% echo $var1[1]
a
% echo $var1[1-3]
a b c

% set a=($<)
xxx
% echo $a
xxx

Еще одно отличие csh от Bourne Shell заключается в том что с помощью фигурных скобок { } можно проверять завершилась ли нормально команда помещенная в эти скобки. Например, следующий скрипт:

#!/usr/bin/csh
if ({ cat /tmp/aaa }) then
echo OK
endif

в случае успешного вывода содержимого файла /tmp/aaa напечатает в конец фразу OK.

2.3.7 Управляющие структуры скриптов.

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

Условный оператор
if ( expression ) then
command1
command2

else
command1
command2

endif
Если требуется запуск лишь одной команды то endif можно не ставить:

if ( expression ) command

Цикл foreach

Этот цикл является полным аналогом цикла for Bourne Shell.

foreach index_variable (loop_values)
command1
command2
….
end

Если в качестве команды внутри цикла встречается команда break то выполнение цикла прерывается, если команда continue то продолжается но уже со следующим из значений параметра взятым из loop_values.

Цикл while

while (expression )
command1
command2

end

полный аналог цикла while в Bourne shell.

Команда switch

Очень похожа на аналогичный оператор в языке С, является аналогом команды case в Bourne shell

switch ( word )
case string1:
command1
command2
….
breaksw
case string2:
command1
command2
….
breaksw
…..
default:
command1
command2

endsw

Команда безусловного перехода goto

label:
command1
command2


goto label

осуществляет переход на команду следующую за меткой указаной в команде (в данном случае на command1).

Обработка прерываний

onintr label

Эта команда позволяет обрабатывать прерывания скриптов. При выполнении прерывания она выполняет переход на команду стоящей непосредственно за меткой label (аналогично выполнению goto label)


Korn Shell и POSIX shell

2.4.1 Общее знакомство с шеллами
2.4.2 Старт шеллов
2.4.3 Грамматика шеллов
2.4.4 Алиасинг
2.4.5 Возможности подстановок
2.4.6 Командная строчка и история команд
2.4.6 Управление заданиями
2.4.7 Программирование скриптов
2.4.8 Дополнительные команды

2.4.1 Общее знакомство с шеллами

Оба этих шелла базируються на Bourne Shell, но помимо этого они унаследовали много полезных функций Csh. Они рактически на 95% совместимы вверх с Bourne Shell и большинство программ написанных на Bourne Shell будут исполняться на них без изменений. Также следует отметить тот факт что по скорости исполнения они оперережают Bourne Shell.

Основные возможности унаследованные от Csh

* Буфер истории команд.
* Алиасинг
* Массивы
* Целочисленная математика
* Управление заданиями

2.4.2 Старт шеллов

В том случае если Korn или POSIX Shell являються логин-шеллами, после входа в систему и запуска они используют файл /etc/profile и файл.profile если последний существует в домашней директории пользователя. Независимо от того запускается ли шелл после логина или в любой другой момент времени, при старте он анализирует переменную окружения $ENV, которая обычно указывет на файл.profile или.kshrc. Если файл с именем указанным в этой переменной существует то он выполняется.

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 которая связывает эту комбинацию клавиш с посылкой сигнала 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 и используется для вычисления в простых математических выражениях. Пример использования:

$ x=10
$ let x=2*x+5-3/x
$ echo $x
25

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

ulimit [-f n ]

Эта команда задает ограничение n блоков на файлы записанные на диск порожденными процессами. Запущеная без аргументов показывет текущий лимит.

Массивы

Для доступа к елементам массива используют следующий синтаксис:

array_name [subscript]=value

например:

$ a[0]=10
$ a[1]=xxx
$ a[2]=tt
$ echo ${a[1]}
xxx
$ echo ${a[*]}
10 xxx tt

Key Shell (keysh).

Это меню-ориентированный интерактивный шелл разработанный компанией Hewlett-Packard для создания дружественного интерфейса к Korn Shell. Шелл содержит последовательности горячих клавиш для быстрого просмотра списка файлов, задач принтера и просмотра файлов, которые он автоматически транслирует в команды HP-UX.
Key Shell содержит все необходимые свойства и возможности Korn Shell (см. Korn Shell). Дополнительные ...

2РЕФЕРАТ

Курсовая работа: 54 стр., 2 табл., 3 источника.

Internet, Компьютерные сети, Relcom, WWW - сервер, FTP - сервер,
Сервис-провайдеры, Электронная почта, подключение.

Целью работы является исследование развития Internet в России.
Метод проведения работы - анализ литературных источников по соот-
ветствующему вопросу.
Результатом выполнения работы являются выводы о темпах роста In-
ternet в российских условиях и проблемах возникающих при этом.
.

- 2 -

ш1.7
2СОДЕРЖАНИЕ

2ВВЕДЕНИЕ 0........................................................3

21. ...
"Интернет" - штуковина развивающаяся: вроде бы совсем недавно появилась
"Мозаика", первую версию Netscape только прошлой зимой увидели, а вот,
глядишь, уже и к виртуальной реальности подобрались. ...
[Aббревиатура]
[1]AARP Apple Adress Resolution Protocol
[1]ABM Asynchronous Balanced Mode
[1]AC Access Control
[1]ACK Acknowledment
[1]ACSE Association Control Service Element
[1]ADCCP Advanced Data Communication Control Procedures
[1]ADMO Administration Management Domain
[1]ADSP AppleTalk Datastream Protocol
[1]AFI AppleTalk Filing Interface
[1]AFP AppleTalk Filing Protocol
[1]ALO At Least Once
[1]AM Amplitude Modulation
[1]AMD Advanced Micro Devices
[1]AMI Altemate Mark Inversion
[1]AMT Adress Mapping Table
[1]ANSI American National Standards Institute
[1]ANTC Advanced Networking Test Center
[1]APPC Advanced Program-to-Program Communications
[1]APPN Advanced Peer-to-Peern Networking
[1]ARM Asynchronous Response Mode
[1]ARP Adress Resolution Protocol
[1]ARPANET Advanced Research Projects Agency Network
[1]AS Application System (AS/400)
[1]ASCII American Standard Code for Information Interchange
[1]ASE Applied Service Element
[1]ASK Amplitude Shift Keying
[1]ASN.1 Abstract Syntax Notation One
[KC AC-1]
[1]ASP AppleTalk Session Protocol
[1]ATA Arcnet Trade Association
[1]ATM Automatic Teller Machine
[1]ATP AppleTalk Transaction Protocol
[1]AT&T American Telephone and Telegraph
[1]AUI Auxiliary Unit Interface
[1]BB&N Bolt, Beranek & Newman
[1]BER Basic Encoding Rules
[1]BOC Bell Operating Company
[1]BSC Bisync Communication
[1]BSD Berkeley Software Distribution
[1]CAD Computer-Aided Design
[1]CAM Channel Access Method
[1]CAM Computer-Aided Manufacturing
[1]CATV Community Access Television
[1]CCITT Consultive Commitee on International Telegraph and Telephone
[1]CD Compact Disc
[1]CD Carrier Detection
[1]CICS Customer Information Central System
[1]CLNP Connectionless Network Protocol
[1]CLNS Connectionless Network Services
[1]CMIP Common Management Information Protocol
[1]CMIS Common Management Information Services
[1]CMOS Complementary Metal Oxide Semiconductor
[1]CMOT CMIP Over TCP/IP
[1]CMS Conversational Monitor System
[1]CO Central Office
[1]CONS Connection Oriented Network Services
[1]COS Corporation for Open Systems
[KC AC-2]
[1]CPU Central Processing Unit
[1]CR Carriage Return
[1]CRC Cyclic Redundancy Check
[1]CRT Cathode Ray Tube
[1]CSMA/CD Carrier Sense Multiple Access/Collisoin Detection
[1]CTS Clear to Send
[1]DAP Data Access Protocol
[1]DAS Dynamically Assyned Sockets
[1]dB Decibel
[1]DCE Data Circuit Terminating Equipment
[1]DDCMP Digital Data Communication Message Protocol
[1]DDN Defense Department Network
[1]DDP Datagram Delivery Protocol
[1]DF Don't Fragment
[1]DHA Destination Hardware Adress
[1]DIB Directory Information Base
[1]DID Destination Identification
[1]DIS Draft International Standards
[1]DNA Digital Network Architecture
[1]DoD Department of Defense
[1]DOS Disk Operating System
[1]DP Draft Proposal
[1]DQDB Distributed Queue Dual Bus
[1]DS Directory Services
[1]DSA Directory System Alert
[1]DSA Destination Software Adress
[1]DSAP Destination Service Access Point
[1]DSR Data Set Ready
[1]DTE Data Terminal Equipment
[KC AC-3]
[1]DTR Data Transmit Ready
[1]DUA Directory User Agent
[1]EBCDIC Extended Binary Coded Decimal Interchange Code
[1]ED End Delimiter
[1]EIA Electronic Industries Association
[1]ELAP EtherTalk Link Access Protocol
[1]EMA Enterprise Management Architecture
[1]EMI Electromagnatic Interference
[1]ENQ Enquiry
[1]EOT End of Transmission
[1]ES End System
[1]FBE Free Buffer Enquiry
[1]FCC Federal Communications Commission
[1]FCS Frame Check Sequence
[1]FDDI Fiber Distribution Data Interchange
[1]FDM Frequency Division Multiplexing
[1]FEP Front End Processor
[1]FIN Finish Flag
[1]FM Frequency Modulation
[1]FRMR Frame Reject
[1]FS Frame Status
[1]FTAM File Transfer, Access and Management
[1]FTP File Transfer Protocol
[1]GDS General Data Stream
[1]GHz Gigahertz
[1]GOSIP Government Open System Interconnection Profile
[1]HDLC High Level Data Link Control
[1]HP Hewlett Packard
[1]Hz Hertz
[KC AC-4]
[1]I/O Input/Output
[1]IAB InternetActivities Board
[1]IBM International Business Machines
[1]IC Integrated Circuit
[1]ICMP Internet Control Message Protocol
[1]IDG Interdialog Gap
[1]IDP Internetwork Datagram Protocol
[1]IEEE Institute of Electrical and Electronic Engineers
[1]IFG Interframe Gap
[1]IHL Internet Header Length
[1]ILD Injection Laser Diode
[1]IMS Information Managment System
[1]INTAP Interoperability Technology Association for Information
Processing
[1]IP Internet Protocol
[1]IPL Initial Program Load
[1]IPX Interwork Packet Exchange
[1]IR Internetwork Router
[1]IS International Standard
[1]IS Intermediate System
[1]ISDN Integrated Services Digital Network
[1]ISN Initial Sequence Number
[1]ISO International Organization for Standartization
[1[ISODE ISO Development Environment
[1]ITI Industrial Technology Institute
[1]ITT Invitation to Transmit
[1]IWU Intermediate Working Unit
[1]kHz Kilohertz
[1]LAN Local Area Network
[1]LAP Link Access Protocol
[KC AC-5]
[1]LAPB Link Access Protocol-Balanced
[1]LAPD Link Access Protocol-Digital
[1]LAT Local Area Transport
[1]LATA Local Access and Transport Areas
[1]LED Light Emmiting Diode
[1]LLAP LocalTalk Link Access Protocol
[1]LLC Local Link Control
[1]LSL Link Support Layer
[1]LU Logical Unit
[1]MAC Media Access Control
[1]MAN Metropolian Area Network
[1]MAP Manufacturing Automation Protocol
[1]MAU Medium Attachment Unit
[1]Mbps Megabits per second
[1]MBps Megabyts per second
[1]MF More Fragments
[1]MHS Message Handling Service
[1]MHz Megahertz
[1]MIB Management Information Base
[1]MOP Maintenance Operation Protocol
[1]MOTIS Message Oriented Text Interchange System
[1]MS-DOS Microsoft Disk Operating System
[1]MSAU Multi-Station Access Unit
[1]MSG Message
[1]MTA Message Transfer Agent
[1]MTS Message Transfer System
[1]MUX Multiplexer
[1]MVS Multiple Virtual Storage
[1]NAK Nagative Acknowledgment
[KC AC-6]
[1]NAUN Nearest Active Upstream Neighbor
[1]NBP Name Binding Protocol
[1]NBS National Bureau of Standards
[1]NCP Network Control Program
[1]NCP Netware Core Protocol
[1]NCR National Cash Register
[1]NetBIOS Network Basic Input/Output System
[1]NFS Network File System
[1]NIC Network Interface Card
[1]NIC Network Information Center
[1]NID Next Identifier
[1]NIST National Institute of Standards and Technology
[1]NLM Netware Loadable Module
[1]NRM Normal Response Mode
[1]NRZ Non-Return to Zero
[1]NRZ-I Non-Return to Zero-Inverted
[1]NRZ-L Non-Return to Zero-Level
[1]NSF National Science Foundation
[1]NVE Network Visible Entry
[1]NVTS Network Virtual Terminal Service
[1]ODI Open Data Link Interface
[1]ONC Open Network Computing
[1]OS/2 Operating System/2
[1]OSI Open System Interconnection
[1]P/F Poll/Final Bit
[1]PAC Data Packet
[1]PAD Packet Assembler/Disassembler
[1]PAP Printer Access Protocol
[1]PARC Palo Alto Research Center
[KC AC-7]
[1]PC Personal Computer
[1]PCSA Personal Computer System Architecture
[1]PDN Public Data Network
[1]PDU Protocol Data Unit
[1]PEP Packet Exchange Protocol
[1]PLP Packet Level Protocol
[1]PLU Primary Logical Unit
[1]POP Point of Presence
[1]POTS Plain Old Telephone Service
[1]PRMD Private Management Domain
[1]PSH Push Flag
[1]PSK Phrase Shift Keying
[1]PSTN Public Switched Telephone Network
[1]PTT Postal Telephone and Telegraph
[1]PU Physical Unit
[1]RAM Random Access Memory
[1]PBHC Regional Bell Holding Company
[1]RD Receive Data
[1]REJ Reject
[1]RFC Request for Comment
[1]RIP Routing Information Protocol
[1]RJE Remote Job Entry
[1]RNR Receiver Not Ready
[1]ROSE Remote Operation Service Element
[1]RPC Remote Procedure Call
[1]RPL Remote Procedure Load
[1]RR Receiver Ready
[1]RS Recommended Standart
[KC AC-8]
[1]RST Reset Flag
[1]RTMP Routing Table Maintenance Protocol
[1]RTS Request to Send
[1]RTSE Reliable Transfer Service Element
[1]RZ Return to Zero
[1]SAP Service Advertising Protocol
[1]SAP Service Access Point
[1]SAS Statistically Assigned Sockets
[1]SCS SNA Character String
[1]SD Start Delimiter
[1]SDLC Synchronous Data Link Control
[1]SFD Start of Frame Delimiter
[1]SID Source Identifier
[1]SIP Service Identification Packet
[1]SLU Secondary Logical Unit
[1]SMC Standart Microsystems Corporation
[1]SMDS Switch Multimegabit Data Service
[1]SMT Station Management
[1]SMTP Simple Mail Transfer Protocol
[1]SNA System Network Architecture
[1]SNADS System Network Architecture Distributed Services
[1]SNAP Sub Network Access Protocol
[1]SNMP Simple Network Management Protocol
[1]SOH Start of Header
[1]SONET Synchrjnjus Optical Network
[1]SPP Sequenced Packet Protocol
[1]SPX Sequenced Packet Exchange
[1]SQE Signal Quality Error
[1]SQL Structured Query Language
[KC AC-9]
[1]SRI Standard Research Institute
[1]SSAP Source Service Access Point
[1]SSCP System Service Control Protocol
[1]STP Shielded Twisted Pair
[1]SYN Synchronize Flag
[1]TCP Transmittion Control Protocol
[1]TCP/IP Transmittion Control Protocol/Implement Protocol
[1]TD Transmit Data
[1]TDM Time Devision Multiplexing
[1]TFTP Trivial File Transfer Protocol
[1]TLAP Token Ring Link Access Protocol
[1]TLI Transport Layer Interface
[1]TOS Type of Service
[1]TP Twisted Pair
[1]TPDU Transport Protocol Data Unit
[1]TP[#] Transport Protocol - Class #
[1]TSO Time Sharing Option
[1]TTL Time to Live
[1]TTS Transaction Tracking System
[1]TTY Teletype
[1]TV Television
[1]UA User Account
[1]UDP User Datagram Protocol
[1]UHF Ultra High Frequency
[1]UI Unnumbered Information
[1]ULP Upper Layer Protocol
[1]URG Urgent Flag
[1]UTP Unshielded Twisted Pair
[1]VAP Value Added Process
[KC AC-10]
[1]VAX Virtual Access Extended
[1]VHF Very High Frequency
[1]VM Virtual Mashine
[1]VMS Virtual Memory System
[1]VSE Virtual Storage Extended
[1]VT Virtual Terminal
[1]VTAM Virtual Terminal Access Method
[1]WAN Wide Area Network
[1]WD Woring Document
[1]XDR External Data Representation
[1]XNS Xerox Network System
[1]XO Exactly Once
[1]ZIP Zone Information Protocol
[1]ZIT Zone Information Table
[KC AC-11]
Данное учебное пособие является точным переводом с английского
языка учебных материалов фирмы Novell по курсу 200 "Networking
Technologies Course Student Manual", оно разработано для обучения по
курсу "Технологии создания сетей ЭВМ", проводимому фирмой Novell или
же авторизованными образовательными центрами фирмы Novell. ...
Введение

Человеческое общество характеризуется как непрерывным ростом своих потребностей, так и использованием для их удовлетворения орудий производства - изделий, под которыми обычно понимаются машины, оборудование, устройства и т.п. ...
ВЕДЕНИЕ В MACRO.
MACRO - это последовательность указаний (MACRO - команд), которые могут контролировать работу таблицы и состояние экрана в SuperCalc4.SuperCalc4 предлагает широкий выбор MACRO - команд.
Последовательности MACRO - команд выполняют повторяющиеся действия быстро и аккуратно.Они могут быть как простыми , так и сложными.Вы можете сохранить MACRO внутри какой-то одной таблицы и использовать её для работы только с этой таблицей.А можете создать MACRO в виде отдельного файла на диске и использовать его слюбой таблицей.
СТРУКТУРА MACRO
Для удобства дальнейшего изложения поясним сначала терминологию SuperCalc4.
Термины
Значения
.MACRO
.MACRO - команды
.MACRO - клавиши
Макросы
.MACRO - файл
.MACRO - прог-ма
язык пакета SC4
операторы языка MACRO
MACRO - команды, используемые для ввода в действие клавиш,не дающих изоображение на экране.
программа на языке MACRO, для соз-
дания которой используется команда
//Macro,Write.
Результатом выполнения этой коман-
ды является отдельный текстовый
файл, записанный на диск с рсшире-
нием .XQT.Он может быть использо-
ван в любой талице SuperCalc4.
программа на языке MACRO, создан-
ная внутри какой-то одной таблицы
и в ней хранящаяся. ...
ATLANTA MOSCOW GROUP Реферат COLLECTION

ПЛАН

1. Введение ...



В последние годы большое место в электронике заняли приборы,
использующие явления в приповерхностном слое полупроводника. ...
Общие положения об необходимости устройств резервного копирования.
С появлением современных малогабаритных и, вообще говоря, достаточно надежных винчестеров для массы “неорганизованных” пользователей средства резервного копирования как бы отодвинулись на второй план. ...
©2007—2016 Пуск!by | По вопросам сотрудничества обращайтесь в contextus@mail.ru