
- •Тема 1. Основы Unix
- •Структура unix
- •Сравнение Windows 2000 и Unix
- •Сравнение FreeBsd и Linux
- •Командные интерпретаторы Unix
- •Тема 2. Команды интерпретатора
- •2.1 Команды работы с файловой системой
- •2.2 Создание ссылок
- •2.3 Конвейеры и перенаправление ввода-вывода
- •Тема 3. Сценарии
- •3.1 Редактирование исходных файлов
- •3.2 Работа с командным интерпретатором
- •3.3 Переменные
- •3.4 Взаимодействие с пользователем
- •3.5 Арифметические операции в сценариях
- •Тема 4. Операторы сценариев
- •4.1 Операторы цикла
- •4.2 Другие операторы
- •4.3 Арифметические операторы and и or
- •Код завершения
- •Файловые дескрипторы
- •Отладка сценариев
- •4.7 Запись команд
- •Использование специальных символов
- •Тема 5. Файловая система FreeBsd
- •Разделы жесткого диска
- •5.2 Файловые системы
- •Монтирование файловых систем
- •Блоки и индексные дескрипторы
- •5.5 Пользователи и группы
- •5.6 Права доступа к файлам и каталогам
- •5.7 Добавление и удаление учетных записей пользователей
- •5.8 Управление процессами
- •Тема 6. Работа с файлами в Unix
- •6.2 Файловые функции Unix
- •6.3 Пример программы для обработки файла
- •Тема 7. Межмашинное взаимодействие
- •7.1 Сокеты
- •7.2 Функции для программирования сокетов
- •Тема 8. Программирование процессов
- •8.1 Информация о процессах
- •8.2 Создание порожденного процесса
- •8.3 Программные каналы
- •Тема 9. Web и Ftp сервисы
- •9.1 Конфигурирование Web-сервера
- •9.2 Конфигурирование ftp-сервера
- •Подключение к Internet
3.2 Работа с командным интерпретатором
Работа с интерпретатором не ограничивается выполнением команд из командной строки. Для интерпретатора можно писать также программы (сценарии) [1,3]. Эти программы могут включать как команды командной строки, так и операторы встроенного языка программирования.
Простейшая программа:
#!/bin/sh
echo “Hello”
Сохраним этот текст в файл с именем “hello”.
Применим к файлу команду
chmod u+x hello
Команда chmod изменяет атрибуты защиты файла, в данном случае она устанавливает права владельца на запуск файла.
Теперь файл можно запустить командой
./hello
На экран будет выведено слово Hello.
Строка с началом #! сообщает системе имя интерпретатора, в котором должен выполняться данный сценарий.
Для Perl, например, может быть
#!/usr/bin/perl
Один символ # означал бы комментарий.
Вместо echo “Hello” можно было бы написать: printf “Hello”.
3.3 Переменные
Язык интерпретатора содержит два типа переменных: переменные сценария (т.е. локальные) и переменные среды. Переменные среды доступны другим программам, а переменные сценария только ему самому.
В отличие от других языков, переменные не нужно объявлять до их использования. В простейшем случае значение переменной присваивается так:
myvar=5
Для доступа к информации в переменной перед ее именем следует указывать символ $. Например:
echo ${myvar}
выводит на экран 5. Фигурные скобки не обязательны, они улучшают читаемость кода. Вариант записи с пробелами
myvar = 5
привел бы к ошибке, так как myvar было бы воспринято как имя команды, которую нужно запустить. Значение одной переменой можно присвоить другой:
myvarB=$myvar
Если создается переменная среды, ее нужно экспортировать, чтобы она была доступна другим программам, запущенным из данного интерпретатора.
MYVAR=5
export MYVAR
В именах переменных учитывается регистр. Имена могут содержать буквы, цифры и знак подчеркивания “_”, но должны начинаться с буквы. Обычно в локальных переменных используют нижний регистр, в переменных среды – верхний.
3.4 Взаимодействие с пользователем
Для ввода данных из клавиатуры существует команда read. Пример:
#!/bin/sh
echo “Your name”
read name
echo “Hello, ${name}”
Команда read может использовать несколько переменных:
read var1 var2 var3
Получить информацию от пользователя можно также при помощи аргументов командной строки. Значения этих переменных автоматически сохраняются в специальных переменных.
В командную строку можно включить до 9 аргументов командной строки. Они хранятся в переменных $1 - $9. Переменная $0 содержит имя самой программы, переменная $@ - все аргументы, а $# - количество аргументов.
Еще один способ присвоения значения переменной – подстановка команд.
Пример:
TodayDate=`date`
Здесь вывод команды date присваивается переменной TodayDate.
3.5 Арифметические операции в сценариях
Простейшие операции можно выполнить с помощью команды expr (expr не работает с вещественными числами, скобки не поддерживаются).
Пример:
var3=`expr $var1 + $var2`
Аргументы и оператор нужно разделять символом пробела. Используются операции: / - деление нацело, % - остаток от деления, \* - умножение (использовано экранирование символа).
Оператор expr 2 + 2 = 4 + 1 возвращает 0, поскольку выражение не является истинным. Оператор expr 5 != 3 возвращает 1 (истина).
Команда expr позволяет обрабатывать также неравенства, при этом знаки операций экранируются: \>, \<, \>=, \<=. Могут сравниваться и строки: expr ”One” = ”one”.
Для операций с числами с плавающей точкой используется команда bc, которая по существу представляет собою отдельный язык программирования.