- •Министерство образования Российской Федерации
- •Введение Лабораторная работа №1 основы интерактивной работы в Linux
- •Программа работы
- •Пояснение к работе Пользователи.
- •Сеанс работы.
- •Работа в консоли.
- •Монтирование каталога oc NetWare
- •Интерпретатор команд.
- •Справочная система man, xman, info.
- •Программа Midnight Commander.
- •Завершение сеанса работы в ос unix.
- •Контрольные вопросы
- •Содержание отчета
- •Лабораторная работа № 2 команды файловой системы текстовый редактор VI
- •Программа работы
- •Пояснения к работе Команды для работы с каталогами
- •Смена текущего каталога с помощью команды cd.
- •Выдача информации о файлах и каталогах с помощью команды ls
- •Создание каталога с помощью команды mkdir
- •Удаление каталогов с помощью команды rmdir
- •Команды работы с файлами
- •Копирование файлов(каталогов) с помощью команды ср
- •Перемещение файлов (каталогов) с помощью команды mv
- •Конкатенация файлов с помощью команды cat
- •Удаление файлов с помощью команды rm
- •Перенаправление ввода и вывода и конвейеризация
- •Запуск команд
- •Текстовый редактор VI
- •Начала VI
- •Вставка текста
- •Удаление текста
- •Изменение текста
- •Команды перемещения
- •Сохранение файлов и выход из VI
- •Редактирование еще одного файла
- •Включение других файлов
- •Выполнение команд Shell
- •Получение помощи
- •Контрольные вопросы
- •Содержание отчета
- •Синтаксис скрипта.
- •Команды функции и программы.
- •Шаблоны
- •Переменные
- •Переменные окружения
- •Внутренние переменные
- •Условные выражения
- •Селекторы
- •Варианты заданий
- •Контрольные вопросы
- •Содержание отчета
- •Библиографический список
Синтаксис скрипта.
Скрипт представляет собой обычный текстовый файл, в котором записаны инструкции, понятные командному интерпретатору. Это могут быть команды, выражения shell или функции. Интерпретатор считывает эти инструкции из файла и последовательно их выполняет. Для этого пользователь, запускающий скрипт должен обладать правом на выполнение (х). Имя интерпретатора (у нас это bash) помещается в первой строке следующим образом:
#!/bin/bash
Комментарии в bash начинаются с символа ‘#’ и могут занимать как всю строку, так и располагаться после команды.
Команды функции и программы.
Все команды, которые вводятся в строке приглашения оболочки, относятся к одной из следующих категорий:
1) встроенные функции (встроенные команды);
2) функции оболочки, определенные пользователем;
3) внешние программы (внешние команды) и утилиты.
Команды, код которых находится в исполняемом файле оболочки, называются встроенными или внутренними. Наиболее важные из них ‑ cd, pwd, echo, kill, read, set, unset, setenv, export.Если набранное пользователем имя команды является именем встроенной команды, она немедленно будет исполнена без порождения нового процесса.
Если же имя не совпадает с именами встроенных команд, оболочка выполняет поиск исполняемого файла программы с указанным именем. Программы и утилиты представляют собой внешние по отношению к оболочке команды и являются обычными исполнительными файлами.
Пользователям, запускающим команды, нет необходимости знать, какого типа эти команды.
Пользователь может определить функцию командного интерпретатора и использовать ее как встроенную функцию shell, которая по синтаксису мало отличается от скрипта, но работает быстрее.
Синтаксис пользовательской функции: name_function() { command command . . . } |
Пример пользовательской функции: mcd() { cd $HOME echo You are in home directory } |
Шаблоны
* любое имя файла (или его части), кроме начинающихся с символа ‘.’
[abc] любой символ из перечисленных (a или b или с)
? любой одиночный символ
Переменные
В командной строке или скрипте командного интерпретатора пользователь может определить и использовать переменные. Каждая переменная имеет имя и набор допустимых значений. Имя (идентификатор) переменной может содержать прописные и строчные буквы латинского алфавита, символ подчеркивания и цифры. Регистр букв в именах переменных различается. Имя переменной не должно начинаться с цифры. Значениями переменных являются строки символов:
...~>имя=значение
Использовать в любом месте командной строки значение любой переменной можно с помощью конструкции ${имя}, например:
...~>echo $var1
при интерпретации командной строки в нее будет подставлен текст, являющийся значением переменной.
Имя переменной может быть присвоено другой переменной:
...~>var1=$var2
Поскольку значение переменной представляет собой строку, оно может быть получено из стандартного потока вывода команды, например:
...~>var1=’pwd’
...~>echo $var1
/home/alla
Более сложные синтаксические конструкции получения значения переменной:
$var |
значение var; ничего если переменная не определена |
${var} |
то же, но отделяет имя переменной от последующих символов |
${var:-string} |
значение var, если определено; в противном случае – string; значение var не изменяется |
${var:=string} |
то же, но если переменная var не определена,Ю ей присваивается значение строки string |
${var:?string} |
если переменная var не определена, выводится строка string и интерпретатор прекращает работу; если строка string пуста, то выводится сообщение var: parametr not set |
${var:+string} |
строка string, если переменная var определена, в противном случае - ничего |
Переменные в оболочках могут быть и массивами. Массив хранит значения нескольких строк (по числу элементов массива). В командах оболочки можно использовать либо значение всех элементов сразу, либо значение каждого элемента в отдельности. Массив задается как перечислением значений всех его элементов, так и заданием отдельных элементов:
#имя=(значение1 значение 2 . . . значение N) или #имя[индекс]=значение
здесь индекс – целочисленное выражение, вычисляемое до операции присваивания. В bash индекс должен быть неотрицательным, ограничений на размер массива нет, заданные элементы не обязательно должны следовать друг за другом.
Примеры:
...~>s=(‘Это нулевой эл-т’ первый ВТОРОЙ) ...~>echo ${s[0]} Это нулевой эл-т ...~>echo ${s[2]} ВТОРОЙ
|
declare –a mass #объявление массива echo Input mass (elements separated by space) read –a mass #ввод элементов count=${#mass[@]} #число элементов массива i=0 while [ “$i” –lt “$count” ] do echo ${mass[I]} #вывод массива по элементам let “i=i+1” done echo ${mass[@]} #вывод массива по словам |
Вывести на экран значения всех переменных (и функций) можно с помощью команды set без аргументов.