образования и науки РФ
Иркутский государственный технический университет
ОПЕРАЦИОННЫЕ СИСТЕМЫ
Программа,
методические указания и задания
к выполнению контрольной и лабораторной работ
(для студентов заочной формы обучения)
Специальность 220100 - Вычислительные машины, системы и сети
Направление 654600 – Информатика и вычислительная техника
Издательство Иркутского государственного
технического университета
2011
Операционные системы: программа, методические указания и задания
к выполнению контрольной и лабораторной работ / сост. С. С осинская.; Иркутск: Изд-во ИрГТУ, 2011, 36 с.
Программа разработана в соответствии с требованиями государственного стандарта высшего профессионального образования по специальности 220100 – 2»Вычислительные машины, системы и сети».
Задания и методические указания по выполнению лабораторной работы и контрольной работы связаны с командными языками операционных систем, в них излагаются основные сведения о программировании на языке WSH операционной системы Windows и языке Shell операционной системе Unix, приводятся индивидуальные задания.
Предназначены для студентов заочной формы обучения.
Рецензент: канд. техн. наук, заведующий кафедрой ВТ ИрГТУ
ПРОГРАММА
1. Назначение и функции операционных систем (ОС). ОС как расширенная машина. ОС как система управления ресурсами. Классификация ОС по особенностям алгоритмов управления ресурсами.
2. Мультипрограммирование. Системы пакетной обработки. Режим разделения времени. Многопользовательский режим работы. Режим работы и ОС реального времени.
3. Принципы построения ОС
4. Понятие процесса и ядра. Сегментация виртуального адресного пространства процесса. Структура контекста процесса. Идентификатор и дескриптор процесса. Иерархия процессов.
5. Диспетчеризация и синхронизация процессов. Понятия приоритета и очереди процессов. Средства обработки сигналов.
6. Управление памятью. Совместное использование памяти. Защита памяти. Механизм реализации виртуальной памяти. Стратегия подкачки страниц.
7. Управление файлами.
8. Защита ОС от сбоев и несанкционированного доступа.
9. Командные языки операционных систем. Командные языки для пакетной обработки операционных систем. Shell-процессор ОС UNIX. Командный язык WSH ОС Windows 2000.
После изучения тем курса студент-заочник должен выполнить контрольную работу на тему: «Разработка скрипта на командном языке WSH» согласно общему заданию, которое выполняется по индивидуальному варианту.
ЗАДАНИЕ К КОНТРОЛЬНОЙ РАБОТЕ
В зависимости от индивидуального варианта в интерактивном режиме выберите один из нескольких видов действий. Всю информацию, не заданную конкретными значениями, вводите в интерактивном режиме. Предусмотрите реакцию на ошибочные ситуации (отсутствие нужных файлов или присутствие вновь создаваемых).
Варианты индивидуальных заданий
1.В зависимости от запроса
· найти в файле с заданным именем строки с текстом ААА;
· отсортировать файл по убыванию второго символа и записать в новый файл;
· выдать на экран файл с заданным именем.
2.В зависимости от запроса
· удалить указанный файл из указанного каталога;
· строки, не содержащие символ Х в заданном файле текущего каталога, отсортировать по возрастанию 4-го символа и выдать на экран.
3.В зависимости от запроса
· подсчитать количество строк заданного файла указанного каталога, содержащих указанный текст;
· отсортировать заданный файл текущего каталога, содержащий записи вида ФИО, дата рождения по возрастанию даты.
4.В зависимости от запроса
· скопировать заданный файл из одного каталога в другой с другим именем;
· из файла с указанным именем заданного каталога, содержащего записи вида название книги, количество экземпляров, ФИО автора, год издания, выбрать записи с указанным названием и выдать их на экран с указанием порядковых номеров записей.
5.В зависимости от запроса
· переименовать указанный файл указанного каталога;
· выдать на экран список имен файлов с заданным расширением заданного каталога.
6.В зависимости от запроса
· удалить файлы с указанными расширениями (любое число расширений) в текущем каталоге;
· отсортировать файл с указанным именем заданного каталога, содержащий записи вида имя ребенка, пол, возраст , по возрасту и записать в файл с заданным именем, который затем выдать на экран.
7.В зависимости от запроса
· скопировать файл с указанным именем из одного каталога в другой;
· отсортировать заданный каталог по дате создания и выдать его на экран.
8.В зависимости от запроса
· создать подкаталог текущего каталога с указанным именем и скопировать в него из текущего каталога любые указанные файлы;
· переместить указанные файлы из одного подкаталога текущего каталога в другой с уничтожением или с сохранением оригиналов (в зависимости от запроса).
9.В зависимости от запроса
· отсортировать файл с заданным именем по убыванию 1-ого или по возрастанию 20-ого символа (по запросу), записать в файл с указанным именем и выдать на экран;
· переименовать указанный файл указанного каталога;
· удалить указанный файл текущего каталога.
10.В зависимости от запроса
· осуществить постраничный вывод указанного файла на экран;
· выдать в файл и на экран список имен файлов, имена которых начинаются на заданную букву.
11.В зависимости от запроса
· создать подкаталог текущего каталога и скопировать в него файлы с расширениями PAS, BAS, C и TXT, присвоив им атрибут «только для чтения»;
· в заданном каталоге выдать на экран список имен файлов с расширениями PAS, TXT, BAT;
· отсортировать указанный файл текущего каталога по убыванию 2-ого символа и выдать его на экран.
12.В зависимости от запроса
· удалить указанные файлы указанного каталога;
· подсчитать в заданном файле текущего каталога число строк, не содержащих заданную строку;
· отсортировать файл с заданным именем заданного каталога, содержащий записи вида ФИО, возраст, по возрастанию возраста и выдать его на экран и в заданный файл.
13.В зависимости от запроса
· выдать на экран тексты файлов текущего каталога с указанным расширением;
· отсортировать указанный файл, содержащий записи вида: ФИО, возраст, по убыванию возраста и выдать на экран.
14.В зависимости от запроса
· переименовать все файлы указанного каталога с расширением на заданную букву;
· вывести на экран содержимое указанного подкаталога текущего каталога, рассортированное по дате создания.
15.В зависимости от запроса
· создать подкаталог текущего каталога с указанным именем и переместить в него файлы текущего каталога с заданным именем;
· вывести на экран и в указанный файл содержимое указанного подкаталога.
16.В зависимости от запроса
· подсчитать количество строк, не содержащих заданный текст, в заданном файле текущего каталога;
· переместить файл с указанным именем из одного каталога в другой.
17.В зависимости от запроса
· отсортировать файлы заданного каталога, созданные до указанной даты, по расширению;
· удалить файлы с указанным расширением в указанном каталоге.
18.В зависимости от запроса
· удалить подкаталог текущего каталога с указанным именем (если он пуст);
· удалить из непустого подкаталога текущего каталога файлы с расширениями PAS, BAS и TXT.
19.В зависимости от запроса
· для каждого типа файлов - TXT, INF, ASM - выдать число строк с заданным текстом;
· отсортировать файлы заданными именами по убыванию 3-го символа.
20.В зависимости от запроса
· создать подкаталог текущего каталога с заданным именем и переместить в него из текущего каталога все файлы с расширением TXT, сделав их скрытыми;
· в каждом файле с расширением PAS или C заданного каталога найти и выдать на экран строки с определенным текстом, подсчитать количество таких строк.
21.В зависимости от запроса
· подсчитать число файлов заданного каталога, созданных или модифицированных в заданную дату;
· выдать на экран список имен файлов текущего каталога, содержащих заданную строку.
22.В зависимости от запроса
· объединить три файла с заданными именами в один и скопировать этот файл в заданный каталог;
· выдать на экран перечень всех подкаталогов заданного каталога.
23.В зависимости от запроса
· заданный файл в заданном каталоге, имеющий содержание ФИО - 20 символов, адрес - 30 символов, N телефона - 6 символов, отсортировать по возрастанию N телефона.
· в зависимости от значения параметра отсортировать заданный каталог либо по возрастанию имени, либо по убыванию расширения, либо по возрастанию размера.
24.В зависимости от запроса
· удалить из заданного каталога все файлы, имеющие расширение на заданную букву;
· выдать на экран содержимое файла с заданным именем заданного каталога, если он не пуст;
· переименовать файлы заданного каталога с именами, начинающимися на заданную букву.
25.В зависимости от запроса
· скопировать в файл с указанным именем указанного каталога те строки заданного файла текущего каталога, которые содержат заданный текст;
· переместить файл с заданным именем из одного каталога в другой.
26.В зависимости от запроса
· скопировать заданный файл текущего каталога в указанный каталог;
· отсортировать указанный файл указанного каталога по 10 символу, записать в файл с указанным именем;
· вывести на экран содержимое файлов указанного каталога с именем на заданную букву, затем эти файлы удалить.
Затем студент-заочник должен выполнить лабораторную работу на тему: «Разработка скрипта на языке SHELL ОС Unix»
ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ
В зависимости от запроса в интерактивном режиме выберите один из нескольких вариантов действий. Всю информацию, не заданную конкретными значениями, вводите в интерактивном режиме и/или передавайте через параметры при вызове скрипта (сочетать тот и другой способы). Предусмотрите реакцию на ошибочные ситуации (отсутствие нужных файлов или присутствие вновь создаваемых).
Индивидуальные варианты к лабораторной работе
1.В зависимости от запроса
· найти в файле с заданным именем строки с текстом ААА;
· отсортировать файл по убыванию второго символа и записать в новый файл;
· подсчитать количество файлов- текстов на С в указанном каталоге.
2.В зависимости от запроса
· удалить указанный файл из указанного каталога;
· строки, не содержащие символ Х в заданном файле текущего каталога, отсортировать по возрастанию 4-го символа и выдать на экран;
· объединить два файла и выдать на экран сводный файл.
3.В зависимости от запроса
· подсчитать количество строк заданного файла указанного каталога, содержащих указанный текст;
· отсортировать заданный файл, содержащий записи вида ФИО, дата рождения, по возрастанию даты;
· создать подкаталог текущего каталога и скопировать в него файлы с указанным расширением. Содержимое созданного каталога вывести на экран и затем удалить каталог.
4.В зависимости от запроса
· скопировать заданный файл из одного каталога в другой с другим именем;
· из файла с указанным именем, содержащим записи вида: название книги, количество экземпляров, ФИО автора, год издания, выбрать записи с указанным названием и выдать их на экран с указанием порядковых номеров.
5.В зависимости от запроса
· переименовать указанный файл указанного каталога;
· выдать на экран список имен файлов заданного каталога с именем, начинающимся на заданную букву;
· определить, принадлежит ли файл определенному пользователю, и если да, переместить его в определенный каталог.
6.В зависимости от запроса
· удалить файлы с указанными расширениями в текущем каталоге;
· отсортировать файл с указанным именем текущего каталога, содержащий записи вида: имя ребенка, пол, возраст, по возрасту и записать в файл с заданным именем, который затем выдать на экран и удалить.
7.В зависимости от запроса
· скопировать файл с указанным именем из одного каталога в другой;
· отсортировать заданный каталог по дате создания и выдать его содержимое на экран.
8.В зависимости от запроса
· создать подкаталог текущего каталога с указанным именем и поместить в него файл с содержимым другого подкаталога, отсортированный по дате создания файлов;
· переместить указанные файлы из одного подкаталога текущего каталога в другой с уничтожением или с сохранением оригиналов (в зависимости от запроса).
9.В зависимости от запроса
· отсортировать файл с заданным именем по убыванию 1-ого или по возрастанию 20-ого символа, перенести в файл с указанным именем и выдать на экран;
· переименовать указанный файл указанного каталога;
· удалить указанный файл текущего каталога.
10.В зависимости от запроса
· осуществить постраничный вывод указанного файла на экран;
· выдать на экран список имен файлов указанного каталога, имена которых начинаются на заданную букву;
· запретить пользователям группы указанного файла изменять и запускать его.
11.В зависимости от запроса
· в заданном каталоге выдать на экран список имен файлов с расширениями PAS, TXT, СС;
· отсортировать указанный файл текущего каталога по убыванию 2-ого символа и выдать его на экран;
· если указанный файл имеет определенное число ссылок, то к правам доступа группы добавить право на чтение.
12.В зависимости от запроса
· удалить указанные файлы указанного каталога;
· подсчитать в заданном файле число строк, содержащих заданный текст;
· отсортировать файл с заданным именем, содержащий записи вида ФИО, возраст, по возрастанию возраста и выдать его на экран.
13. В зависимости от запроса
· выдать на экран указанные файлы текущего каталога;
· отсортировать указанный файл, содержащий записи вида ФИО, возраст, по убыванию возраста и выдать его на экран.
14.В зависимости от запроса
· переименовать все указанные файлы указанного каталога;
· вывести на экран содержимое указанного подкаталога текущего каталога, рассортированное по 1-ому символу имени.
15.В зависимости от запроса
· создать подкаталог текущего каталога с указанным именем и переместить в него указанные файлы из текущего каталога;
· вывести на экран содержимое указанного подкаталога;
· выбрать из указанного файла, содержащего записи вида N п/п, ФИО, Адрес, Дата рождения, все записи с указанной датой рождения и вывести их на экран.
16.В зависимости от запроса
· подсчитать количество строк, не содержащих заданный текст, в заданном файле;
· переместить файл из одного каталога в другой.
17.В зависимости от запроса
· отсортировать файлы из заданного каталога, созданные до указанной даты, по расширению;
· удалить файлы с заданным расширением.
18.В зависимости от запроса
· удалить подкаталог текущего каталога (если он пуст);
· удалить из подкаталога текущего каталога файлы с расширениями PAS, BAS и TXT.
19.В зависимости от запроса
· для каждого типа файлов – TXT, INF, ASM – выдать количество строк с заданным текстом;
· отсортировать файлы, имена которых заданы, по убыванию 3-го символа.
20.В зависимости от запроса
· создать подкаталог текущего каталога с заданным именем и переместить в него из текущего каталога все файлы с заданным расширением;
· в каждом файле с заданным расширением заданного каталога найти и выдать на экран строки с определенным текстом, подсчитать количество таких строк.
21.В зависимости от запроса
· подсчитать число файлов заданного каталога, созданных или модифицированных в заданную дату;
· выдать на экран список имен файлов, содержащих заданную строку.
22.В зависимости от запроса
· объединить три файла с заданными именами текущего каталога, скопировать новый файл в заданный каталог;
· выдать на экран перечень всех подкаталогов заданного каталога.
23.В зависимости от запроса
· заданный файл в заданном каталоге, имеющий содержание ФИО – 20 символов, адрес – 30 символов, N телефона – 6 символов, отсортировать по N телефона;
· в зависимости от значения параметра отсортировать заданный каталог либо по имени, либо по дате последней модификации, либо по размеру.
24.В зависимости от запроса
· удалить из заданного каталога все файлы, имеющие расширение на заданную букву;
· переименовать файлы текущего каталога с именами, начинающимися на заданную букву.
25.В зависимости от запроса
· переписать в новый файл те строки заданного файла, которые содержат заданный текст;
· переместить файл с заданным именем из одного каталога в другой.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ К КОНТРОЛЬНОЙ РАБОТЕ
Введение в Windows Script Host (WSH)
До Windows 98 практически не было средств автоматизации средств работы с файлами, то есть выполнения рутинных операций. Конечно, ряд операций можно было выполнить с помощью старых пакетных (BAT) файлов MS DOS в окне командной строки. Но в командных файлах нельзя поддерживать диалоговые окна и сообщения. Средства программирования в пакетных файлах также весьма ограничены. Windows Script Host (WSH) позволяет писать на языках сторонних организаций - VBScript и JScript, на базе которого был создан автономный сервер сценариев на уровне ОС. Его можно запускать из командной строки. Языки VBScript и JScript имеют доступ к объектам WSH.
Для разработки программы удобно использовать редактор Notepad++, в котором видна вложенность скобок
Сценарий на Jscript имеет расширение. js
Пример 1 – создание диалогового окна. Для создания окна используется метод Echo() объекта Wscript
WScript.Echo("Hello!");
Пользователь может передать сценарию аргументы – строки, разделенные пробелами. Если один из аргументов содержит несколько строк, разделенных пробелами, его заключают в кавычки.
Пример 2 – прием параметров из командной строки.
Объект WScript.Arguments представляет массив аргументов. Вывод c помощью метода Echo() объекта Wscript
var objArgs=WScript. Arguments;
var text="Arguments \n";
var i;
for (i=0;i<objArgs. length;i++)
text=text+objArgs(i)+" ";
text=text+"\n";
WScript.Echo(text);
Введение в JScript
Комментарии – начинается с // - однострочный комментарий
/* */ - многострочный комментарий
Все операторы следует завершать точкой с запятой.
Операторы, стоящие в одной строке, следует разделять запятой или точкой с запятой.
Объявление переменных – неявное (в операторе присваивания) и явное (в операторе var). Пример 3 – вычисления и вывод в диалоговом окне.
vat=16.0,net=100.0,price=net*(1.0+vat/100.0);
WScript. Echo("Price: ",price,"US $ Tax: ",
vat,"\n","% ",price-net," US $");
Область действия переменной:
· Переменная, явно объявленная в функции, действительна только внутри этой функции
· Переменная, неявно объявленная в функции, глобальная область действия
· Переменная, объявленная на уровне сценария, глобальна, независимо от способа объявления (явно или неявно)
Имена переменных чувствительны к регистру. Они начинаются с буквы, знака подчеркивания или знака доллара. Желательная длина имени – не более 8 символов. Имена переменных не должны совпадать с ключевыми словами JScript. Тип данных переменной определяется при присвоении ей значения. При этом происходит приведение типов. Поддерживаются следующие типы данных:
· Числовые
· Булевские (значения true или false)
· Строковые (в кавычках или в апострофах)
При описании путей к файлам нужно пользоваться конструкцией вида:
“C:\\name1\\name2”
Операторы:
· Присваивания
· Сравнения (==, !=, >=, <=, >, <)
· Арифметические (+, -, *, /, % - деление по модулю, +=, -=, *=, /=, %= ,==,
--)
· Строковые (+ - конкатенация)
· Логические (&& – И, || – ИЛИ, ! –НЕ)
Управляющие структуры:
· Оператор if
if(условие)
{операторы, выполняемые при выполнении условия}
else
{операторы, выполняемые при невыполнении условия}
Вторая ветвь может отсутствовать
· Оператор switch
switch (выражение)
{case шаблон1: операторы
case шаблон2: операторы
…
default: операторы}
Ветвь default может отсутствовать. Предотвратить исполнение следующей ветви позволяет оператор break в конце каждой ветви
· Цикл for
for(начальное значение параметра; условие продолжения цикла; закон изменения параметра)
{ операторы тела цикла }
· Цикл while
while(условие продолжения цикла)
{операторы тела цикла}
· Цикл do…while
do
{операторы тела цикла
}while(условие продолжения цикла)
JScript поддерживает встроенные функции и объекты и позволяет создавать собственные функции и объекты.
Функция:
function имя (параметры – необязательные)
{тело функции
return возвращаемое значение – необязательное}
Объекты JScript для выполнения обработки
· String – строка имеет конструктор и ряд методов. Например,
Name=new String(“ddd”)
позволяет манипулировать со строками текста, определять подстроки.
Создание строк
newString = new String(["символыl"])
Свойство length возвращает длину объекта String, то есть его длину в символах
strVariable. length
Последний символ объекта String имеет индекс равный length - 1.
Методы
Метод indexOf возвращает индекс символа строки, равный началу подстроки.
strObj. indexOf(подстрока [, начальный индекс])
Начальный индекс определяет начало поиска. Если он не задан, поиск начинается с начала строки.
Если подстрока не найдена, возвращается -1. Поиск выполняется слева направо.
Пример 4 иллюстрирует использование метода indexOf.
function IndexDemo(str2){var str1 = "BABEBIBOBUBABEBIBOBU"
var s = str1.indexOf(str2);
return(s); }
Метод lastIndexOf возвращает последнее вхождение подстроки в строке.
strObj. lastIndexOf(подстрока [, начальный символ])
Начальный индекс определяет начало поиска. Если он не задан, поиск начинается с конца строки.
Если подстрока не найдена, возвращается -1. Поиск выполняется справа налево.
Пример 5 иллюстрирует использование метода lastindexOf.
function lastIndexDemo(str2)
{ var str1 = "BABEBIBOBUBABEBIBOBU"
var s = str1.lastIndexOf(str2);
return(s);}
Синтаксис регулярного выражения
Регулярное выражение – шаблон текста, который содержит обычные символы (например, буквы от a до z) и специальные символы, называемые метасимволами. Шаблон описывает одну или более строк для сравнения при поиске текста. Регулярное выражение служит шаблоном для сравнения со строкой при поиске.
В табл. 1 приведены примеры регулярных выражений.
Таблица 1
Регулярное выражение | Соответствие |
/^\[ \t]*$/ | Соответствует пустой строке |
/\d{2}-\d{5}/ | Проверяет номер телефона, состоящий из 2 цифр, черточки и 5 цифр. |
/<(.*)>.*<\/\1>/ | Соответствует тегу HTML. |
Табл. 2 содержит список некоторых метасимволов и их поведение в контексте регулярного выражения.
Таблица 2
Метасимвол | Описание |
\ | Отмечает следующий символ как специальный символ. Например, “n” соответствует символу "n". “\n” соответствует символу новой строки. Последовательность “\\” соответствует "\" и "\(" соответствует "(". |
^ | Соответствует позиции в начале строки. |
$ | Соответствует позиции в конце строки. |
* | Соответствует повторению предыдущего выражения 0 или более раз. Например, zo* соответствует "z" и "zoo". |
+ | Соответствует повторению предыдущего выражения 1 или более раз. Например, zo+ соответствует "zo" и "zoo", но не "z". |
? | Соответствует повторению предыдущего выражения 0 или 1 раз. Например, do(es)? соответствует "do" или "does". |
{n} | n – неотрицательное число. Соответствует точно n повторениям. Например, o{2} не соответствует строке “o” в "Bob", но соответствует “oo” в "food". |
{n,} | n – неотрицательное число.. Соответствует по крайней мере n повторениям. Например, o{2,} не соответствует "o" в "Bob" и соответствует всем o в "foooood". |
{n,m} | m и n – неотрицательные число, где n <= m. Соответствует числу повторений не меньше n и не больше m. Например, "o{1,3}" соответствует первым трем o в "fooooood". |
. | Соответствует любому одиночному символу за исключением "\n". |
x|y | Соответствует x или y. Например, z|food соответствует "z" или "food". (z|f)ood соответствует "zood" или "food". |
(?:шаблон) | Метасимвол полезен для комбинирования частей шаблона с символом "или" (|). Например, industr(?:y|ies) более экономичное выражение, чем industry|industries. |
(?=шаблон) | Положительное заглядывание вперед Например, Windows (?=95|98|NT|2000) соответствует "Windows" в "Windows 2000", но не "Windows" в "Windows 3.1". |
(?!шаблон) | Отрицательное заглядывание вперед позволяет сравнивать строку с любой позиции, где начинается шаблон. Например, 'Windows (?!95|98|NT|2000)' соответствует "Windows" в "Windows 3.1", но не соответствует "Windows" в "Windows 2000". |
[xyz] | Множество символов. Подходит, если совпадает любой символ в квадратных скобках. Например, [abc] соответствует a в "plain". |
Окончание табл. 2
[^xyz] | Отрицательное множество символов. Подходит, если есть символ, не совпадающий ни с одним символом в квадратных скобках. Например, [^abc] соответствует p в "plain". |
[a-z] | Диапазон символов. Подходит любой символ в определенном диапазоне. Например, [a-z] соответствует любая малая латинская буква. |
[^a-z] | Отрицательный диапазон символов. Подходит любой символ, не принадлежащий определенному диапазону. Например, [^a-z] соответствует любому символе, не являющемуся малой латинской буквой.. |
Объект RegExp
Внутренний глобальный объект, который сохраняет информацию о результатах сравнений с шаблоном регулярного выражения.
Объект Regular Expression
Это объект, который содержит шаблон регулярного выражения вместе с режимами, которые определяют, как применять шаблон.
Имеется два способа создания шаблона:
Способ 1
re = /шаблон/режимы (необязательные)
Способ 2
re = new RegExp("шаблон",["режимы"])
Режимы необязательны. Возможные их значения, которые могут объединяться:
· g (глобальный поиск всех вхождений шаблона)
· i (игнорировать регистр символов)
· m (многострочный поиск)
После того, как объект Regular Expression создан, он либо передается методу строки, либо строка передается методу объекта регулярного выраженияo. Информация о самом последнем выполненном поиске сохраняется в глобальном объекте RegExp.
Пример 6 иллюстрирует использование объекта Regular Expression путем создания объекта (re), содержащего регулярное выражение вместе с режимами. Результирующий объект Regular Expression затем используется в методе match:
function MatchDemo(){
var r, re;
var s = "The rain in Spain falls mainly in the plain";
re = new RegExp("Spain","i");
r = s. match(re);
return(r); }
Метод exec выполняет поиск в строке с использованием регулярного выражения и возвращает массив, содержащий результаты поиска. .
rgExp.exec ( строка )
Если метод exec не находит совпадения, он возвращает null. Если совпадение найдено, exec возвращает массив. Нулевой элемент массива содержит весь результат сравнения, а элементы 1 – n содержат все отдельные результаты сравнения, которые встретились. Массив, возвращаемый методом exec, имеет три свойства: input, index и lastIndex. Свойство input содержит всю строку, в которой проводился поиск. Свойство index содержит начальную позицию совпавшей подстроки. Свойство lastIndex содержит позицию, следующую за последним совпавшим символом.
Пример 7 иллюстрирует использование метода exec: для поиска
var src = "The rain in Spain falls mainly in the plain";
var re = /ain/g;
while ((arr = re. exec(src)) != null)
WScript. Echo(arr. index + "-" + arr. lastIndex + "\t" + arr);
Метод test возвращает булевское значение, которое указывает, существует ли шаблон в строке.
rgExp.test(строка)
Пример 8 иллюстрирует использование метода test. В примере проверяется присутствие в строке числа со знаком или без знака и отсутствие малых латинских букв:
function TestDemo(re, s){
var s1;
if (re. test(s))
s1 = " contains ";
else
s1 = " does not contain ";
return(s + s1 + re ); }
var reg=/(\+|\-)?[0-9]+[^a-z]/;
var ss="+1234";
var rez=TestDemo(reg, ss);
WScript.Echo(rez);
Метод match выполняет поиск строки с использованием регулярного выражения и возвращает массив, содержащий результаты поиска.
stringObj. match ( регулярное выражение )
Если метод match не находит совпадения, он возвращает null. Если совпадение найдено, match возвращает массив. Если режим g не установлен, то нулевой элемент массива содержит весь результат сравнения, а элементы 1 – n содержат все отдельные результаты сравнения, которые встретились. Если режим g установлен, то элементы 0 – n содержат все сравнения, которые встретились. Массив, возвращаемый методом match, имеет три свойства: input, index и lastIndex. Свойство input содержит всю строку, в которой проводился поиск. Свойство index содержит начальную позицию совпавшей подстроки. Свойство lastIndex содержит позицию, следующую за последним совпавшим символом.
Пример 9 иллюстрирует использование метода match: для поиска
function MatchDemo(){ var r, re;
var s = "The rain in Spain falls mainly in the plain";
re = /ain/i;
r = s. match(re);
return(r); .}
Пример 10 иллюстрирует использование метода match с режимом g.
function MatchDemo(){ var r, re;
var s = "The rain in Spain falls mainly in the plain";
re = /ain/ig;
r = s. match(re); .
return(r); } //Возвращается массив, содержащий все 4 встречаемости "ain".
Метод replace возвращает копию строки с измененным текстом, используя регулярное выражение для поиска заменяемой части.
Пример 11 иллюстрирует использование метода replace для замены первого вхождения слова "The" на слово "A."
function ReplaceDemo(){ var r, re; .
var ss = "The man hit the ball with the bat.\n";
ss += "while the fielder caught the ball with the glove.";
re = /The/g; .
r = ss. replace(re, "A"); //Замена "The". на “A”
return(r); }
Метод search возвращает позицию первой подстроки, совпавшей с регулярным выражением.
stringObj. search(регулярное выражение)
Метод search указывает, присутствует совпадение или нет. Если совпадения нет, метод возвращает -1.
Пример 12 иллюстрирует использование метода search.
function SearchDemo(){ var r, re;
var s = "The rain in Spain falls mainly in the plain.";
re = /falls/i;
r = s. search(re);
return(r); }
Метод substr возвращает подстроку, начиная с определенной позиции и имеющую определенную длину.
stringvar. substr(начало [, длина ])
Если длина меньше или равна 0, то возвращается пустая строка. Если длина не определена, подстрока продолжается до конца строки.
Пример 13 иллюстрирует использование метода substr.
function SubstrDemo(){
var s, ss; //Объявление переменных
var s = "The rain in Spain falls mainly in the plain.";
ss = s. substr(12, 5); //Получение подстроки
return(ss); } // Возвращает "Spain".
Метод substring возвращает подстроку в определенном положении внутри объекта String.
strVariable. substring(начало, конец)
Метод substring возвращает строку, содержащую подстроку, включая начальный символ и исключая конечный.
Метод substring использует наименьшее значение из «начало» и «конец» как начальную точку подстроки. Например, strvar. substring(0,3) и strvar. substring(3,0) возвращает одну и ту же подстроку.
Длина подстроки равна абсолютной величине разности между началом и концом. Например, длина подстроки, возвращаемой вызовом strvar. substring(0,3) и strvar. substring(3,0) равна 3.
Пример 14 иллюстрирует использование метода substring.
function SubstringDemo(){ var ss;
var s = "The rain in Spain falls mainly in the plain..";
ss = s.substring(12, 17); //Получение подстроки
return(ss); } //Возврат подстроки
· Math – математические операции
Внутренний объект, который обеспечивает выполнение математических функций.
Объект Math не может быть создан с использованием оператора new. Скрипт создает его при загрузке. Все его методы и свойства доступны скрипту в любое время.
Свойства LN2 LN10 PI SQRT1_2 SQRT2
Свойство SQRT1_2
Возвращает квадратный корень из 0.5.
numVar = Math. SQRT1_2
Свойство SQRT2
Возвращает квадратный корень из 2.
numVar = Math.SQRT2
Методы abs acos asin atan cos exp max min pow sin sqrt tan
Метод max возвращает наибольшее из 1 или более числовых выражений.
Math.max(число1, число2. . ., числоN)
Необязательные аргументы число1,число2, . . .,числоN являются числовыми выражениями.
Метод pow возвращает значение основания в указанной степени.
Math. pow(основание, степень)
Пример 15 подсчитывает 103.
Math. pow(10,3);
· Объект Array
Обеспечивает поддержку создания массивов из любых типов данных.
Cities=new Array(10); массив из 10 элементов с индексами от 0 до 9
Массив можно инициализировать при его создании:
Cdays=new Array(“aa”,”bb”,…)
или путем присваивания его элементам значений:
cdays[0]=”aa”;
После того, как массив создан, к отдельным элементам массива можно получить доступ, используя запись [ ].
Пример 16:
var my_array = new Array();
for (i = 0; i < 10; i++)
{ my_array[i] = i; }
x = my_array[4];
Так как массивы имеют индексы начиная с 0, то последний оператор в предыдущем примере получает доступ к пятому элементу массива, который содержит значение 4.
Если только один аргумент передается конструктору объекта Array и он является числом, то это значение становится размером массива.
Если один аргумент передается конструктору Array и он не является числом, то свойство length равно 1 и значение аргумента становится единственным элементом массива.
Свойство length возвращает целое значение, на 1 большее максимального индекса массива.
numVar = arrayObj.length
my_array[0] = "Test";
my_array[6] = "Another Test";
Пример 17:
function LengthDemo(){
var a;
a = new Array(0,1,2,3,4);
return(a. length);}
Методы join pop push reverse sort |shift slice splice unshift
Метод join возвращает строку, содержащую все элементы массива, объединенные вместе и разделяемые определенным символом.
arrayObj. join(символ-разделитель)
Если символ-разделитель опущен, то элементы разделяются запятой.
Пример 18.
function JoinDemo(){
var a, b;
a = new Array(0,1,2,3,4);
b = a. join("-");
return(b);}
Метод pop удаляет последний элемент из массива и возвращает его.
arrayObj. pop( )
Метод push добавляет новые элементы в конец массива и возвращает новую длину массива.
arrayObj. push(элемент1 элементэлементiN )
Метод reverse возвращает объект Array с элементами, расположенными в обратном порядке.
Метод reverse обращает элементы объекта Array на месте.
Пример 19.
function ReverseDemo(){
var a, l;
a = new Array(0,1,2,3,4); //Создание массива и заполнение его
l = a.reverse(); //Обращение содержимого массива
return(l); //Возврат результирующего массива }
Метод shift удаляет первый элемент массива и возвращает его.
Метод slice возвращает часть массива
arrayObj.slice(индекс начального элемента массива – start, индекс конечного элемента массива – end)
Метод slice возвращает объект Array, содержащий определенную часть массива. Метод slice копирует все элементы от начального до конечного, исключая элемент, индекс которого указан вторым. Если индекс конечного элемента отрицателен, то копируется length+end, где length – длина массива. Если end опущен, то копирование продолжается до конца массива. Если end< start, ни один элемент не копируется в новый массив.
В Примере 20 все, кроме последнего элемента myArray, копируются в newArray:
newArray = myArray.slice(0, -1)
Метод splice удаляет элементы из массива и, если нужно, вставляет на их место новые элементы
arrayObj. splice(начальный индекс, удаляемое количество элементов, эдемент1, элемент2,. . . элементN)
Метод splice модифицирует arrayObj путем удаления определенного количества от начальной позиции и вставки новых элементов. Удаленные элементы возвращаются как новый объект массив.
Метод sort возвращает объект Array с отсортированными элементами.
arrayobj. sort(функция сортировки)
Если функция сортировки отсутствует, то элементы сортируются в возрастающем порядке элементов
Метод sort сортирует объект Array на месте.
Функция сортировки должна возвращать одно из следующих значений:
· Отрицательное число, если первый передаваемый аргумент меньше второго аргумента.
· Ноль, если аргументы равны.
· Положительное число, если первый передаваемый аргумент больше второго аргумента.
Пример 21.
function SortDemo(){
var a, l;
a = new Array("X" ,"y" ,"d", "Z", "v","m","r");
l = a.sort(); //Сортировка массива
return(l); } //Возвращение отсортированного массива
Пример 22. Сортировка с функцией сравнения:
function f(S1,S2)
{var r=0;
if (S1<S2)r=-1;else
if (S1>S2)r=1;
else r=0;
return r;}
var a, l;
a=new Array (51,7,2,4,7,12);
l = a. sort(f); //Сортировка массива
WScript. Echo(l);
Метод unshift возвращает массив с определенными элементами, вставленными в начало.
arrayObj. unshift(элемент1, элемент2, . . . , элементi N)
· Enumerator – объект для доступа к элементам коллекции.
Методы:
moveFirst( ) полагает текущим элементом коллекции первый элемент.
moveNext( ) позволяет перейти к следующему элементу коллекции.
atEnd() возвращает булевское значение true, если текущий элемент коллекции – последний или коллекция пуста, и false в противном случае
item() возвращает текущий элемент коллекции.
Пример 23.
var fso=WScript. CreateObject(“Scripting. FileSystemObject”);
var oFolder=fso. GetFolder(“Test”);
for (oFiles=new Enumerator(oFolder. Files);!oFiles. attEnd(); oFiles. moveNext())
{…}
Так как в Jscript нет простого способа интерактивного ввода, то предлагается создание комбинированного файла с расширением wsf,
Такой файл будет содержать функцию для ввода на языке VBScript и остальную часть на Jscript, из которой вызывается функция ввода.
Такой wsf-файл имеет структуру:
<job id="bvz">
<script language="VBScript">
Функция на VBScript
</script>
<script language="JScript">
Функции и программа на Jscript
</script>
</job>
Объекты WSH
Объект WScript (предоставляемый сценарию автоматически) имеет метод Echo() для вывода диалогового окна
Кроме этого имеется метод Quit() для завершения сценария
Свойство ScriptFullName возвращает полное имя файла сценария
Потомком WScript является объект WshShell для работы с программами, создания ярлыков, работы с переменными окружения и создания диалоговых окон, параметры которых можно менять.
Для создания COM-объектов объект WScript имеет метод CreateObject()
Вызов WinShell=WScript.CreateObject(“WScript.Shell”) создает экземпляр объекта WshShell.
Объект WshArguments служит для доступа к набору аргументов сценария (аргументов командной строки). Его свойство length определяет число аргументов командной строки
Объект FileSystemObject
Свойство Drives возвращает коллекцию Drives, содержащую все объекты Drive, доступные на локальной машине
Методы:
BuildPath( путь, имя) присоединяет имя к пути файла
CopyFile (имя копируемого файла или группы файлов, имя каталога или файла копии [, булевский признак необходимости перекрытия существующего файла при копировании] ) копирует один или более файлов из одного положения в другое. По умолчанию последний аргумент равен true
Маска * может использоваться только в имени исходного файла. Например, можно использовать вариант:
fso = CreateObject("Scripting.FileSystemObject");
fso. CopyFile ("c:\\mydocuments\\letters\\*.doc", "c:\\tempfolder\\")
CopyFolder ( имя копируемой папки, имя каталога копии [, булевский признак необходимости перекрытия существующего каталога при копировании] ) рекурсивно копирует папку из одного положения в другое.
Маска * может использоваться только в имени исходного файла. Например, можно использовать вариант:
fso = CreateObject ("Scripting.FileSystemObject");
fso. CopyFolder ("c:\\mydocuments\\letters\\*","c:\\tempfolder\\")
CreateFolder(имя каталога) создает каталог.
Ошибка возникает, если каталог существует
DeleteFile (полное имя файла ) удаляет файл
Ошибка возникает, если файл не существует.
DeleteFolder ( полное имя папки) удаляет папку и ее содержимое.
Не делается различия между пустыми и не пустыми папками. Ошибка возникает, если папка не существует.
FileExists(полное имя файла) возвращает true, если файл существует и false в противном случае.
FolderExists(полное имя папки) возвращает true, если папка существует и false в противном случае.
Пример 24. Вывод вложенных папок данной папки
var Text="Folders\n\n",wsh=WScript. CreateObject("WScript. Shell");
var fso=WScript. CreateObject("Scripting. FileSystemObject");
var path=fso. GetSpecialFolder(0);//1-System Folder
Text=Text+path+"\n";
var oFolders=fso. GetFolder(path);
var oSubFolder=new Enumerator(oFolders. SubFolders);
for( ; !oSubFolder. atEnd(); oSubFolder. moveNext())
{oFolder=oSubFolder. item();
Text=Text+oFolder. Name+"\n";}
WScript.Echo(Text);
Пример 25. Определение родительской папки для заданной, а также создание новой папки, удаление и перемещение папки
<job id="Ex">
<script language="VBScript">
Function MyPrompt(Message, Title, Value)
MyPrompt=inputbox(Message, Title, Value)
End Function
</script>
<script language="JScript">
var ff, parent, oFolders, oSubFolder, i;
var wsh=WScript. CreateObject("WScript. Shell");
var fso=new ActiveXObject("Scripting. FileSystemObject");
path=MyPrompt("Введите имя папки: ",”Папка”,"C:");//
pth=path+"\\";
WScript. Echo(pth);
if (pth=="")
WScript. Quit();
var newpath=pth;
r=fso. FolderExists(pth);
if ( r==false ){
ff=fso. CreateFolder(pth);
WScript. Echo("Папка"+pth+ " создана\n");
isnew=true;}
else
{isnew=false;
WScript. Echo(pth+" существует\n");}
parent=fso. GetParentFolderName(pth);
if (parent=="")
WScript.Echo("Нет родительской папки");
else{
oFolders=fso. GetFolder(parent);
oSubFolder=new Enumerator(oFolders. SubFolders);
for(; !oSubFolder. atEnd();oSubFolder. moveNext())
{i=oSubFolder. item();
Text=Text+i. name+"\n";}
WScript. Echo(Text);}
}
if (isnew==false)
WScript. Echo( "Папка будет удалена"+newpath+"\n");
fso. MoveFolder(pth, newpath);
WScript. Echo("Папка переименована "+newpath);}
fso. DeleteFolder(newpath);
</script>
</job>
Объект TextStream – работа с текстовыми файлами
Создание объекта с помощью метода CreateTextFile объекта FileSystemObject.
Пример 26.
var fso = new ActiveXObject("Scripting. FileSystemObject");
var a = fso. CreateTextFile("c:\\testfile. txt", true);
a. WriteLine("This is a test.");
a.Close();
Свойство AtEndOfStream возвращает true, если достигнут конец файла, и false в протином случае. Это свойство доступно, только если файл открыт для чтения
Пример 27
function GetALine(filespec)
{ var fso, f, s, ForReading;
ForReading = 1, s = "";
fso = new ActiveXObject("Scripting. FileSystemObject");
f = fso. OpenTextFile(filespec, ForReading, false);
while (!f. AtEndOfStream)
s += f. ReadLine( ); f. Close( );
return(s);}
Метод ReadLine читает строку и возвращает ее
Метод WriteLine пишет строку в текстовый файл
Пример 28. Создать скрипт с двумя вариантами действий: 1 – удаление файла с заданным именем, 2 – сортировка заданного файла по первому символу
Вариант действия передается как параметр при вызове скрипта.
<job id="Ex">
<script language="VBScript">
Function MyPrompt(Message, Title, Value)
MyPrompt=inputbox(Message, Title, Value)
End Function
</script>
<script language="JScript">
function mysort(L1, L2)
{var temp1 = L1.substring(0, 0);
var temp2 = L2.substring(0, 0);
if (temp1 == temp2) return 0;
else if (temp1 > temp2) return 1;
else return -1; }
function rem()
{if ( !fso. FileExists(Fl) )
{ WScript. Echo("Неверное имя файла " + Fl);
WScript. Quit(); }
else
{fso. DeleteFile (Fl);
WScript. Echo ("Файл "+Fl+" удален");}}
function srt()
{var text = " ", ForWriting=0;
if (!fso. FileExists(Fl))
{ WScript. Echo("Неверное имя файла " + Fl);
WScript. Quit(); }
else
{var f = fso. OpenTextFile(tFl);
var s = new Array(f. Line);
for (i = 0; i < f. Line; i++) {
s[i] = f. ReadLine(); }
f. close();
s. sort(mysort);}}
var F2=MyPrompt("Введите имя отсортированного файла",
”Файл”,"ms. txt");
for (i = 0; i < s. length; i++) {
text += s[i] + "\n";}
WScript. Echo(text);
var fsort = fso. OpenTextFile(F2,ForWriting, true);
for (i = 0; i < s. length; i++)
fsort. f.WriteLine(s[i]);
fsort. close();}
//Основная программа
var fso = WScript. CreateObject("Scripting. FileSystemObject");
var ObjArgs = WScript. Arguments;
if (ObjArgs. length == 0) {
WScript. Echo("1-удаление;2-сортировка ");
WScript. Quit();}
var Fl=MyPrompt("Введите имя файла","m. txt");
var ff = fso. GetFile(WScript. ScriptFullName);
var Fold = ff. ParentFolder;
WScipt. Echo(Fold);
Fl=Fold+"\\"+Fl;
WScipt. Echo(Fl);
if (ObjArgs(0)==1)
rem();
else
if (ObjArgs(0)==2)srt();
else
WScript. Echo ("Введен неверный параметр!!!");
</script>
</job>
МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ
Командный интерпретатор Shell
Shell – это один из командных интерпретаторов, поставляемых вместе с ОС UNIX.
Программа на языке Shell называется скриптом.
Язык программирования Shell
Текст программы состоит из команд, выражений и функций.
Комментарий – любой текст, начинающийся со знака #. Он может стоять в начале или в конце строки.
Переменные. Переменным можно присваивать значение с помощью присвоения вида имя = значение выражения
Для получения значения переменной используется выражение $имя.
Кроме того для присвоения переменной результата выполнения команды используется присвоение вида имя = `команда`
В Shell встроено несколько переменных, к числу которых относится HOME - имя каталога верхнего уровня зарегистрировавшегося пользователя.
Встроенные переменные. Эти переменные устанавливаются самим интерпретатором. Они приведены в табл. 3.
Таблица 3
Переменная | Назначение |
$1, $2, ... | Параметры (не более 9), используемые в командной строке при вызове скрипта. |
$# | Число параметров скрипта. |
$* | Все параметры вызова как единая строка в кавычках. |
$? | Код возврата последнего выполненного процесса |
$@ | Все параметры вызова как отдельные слова в кавычках. |
Примеры:
echo $0
echo $1 $2 $3
if [$# -lt 2] ;then
echo использование: $0 параметр1 параметр2
fi
Перенаправление ввода-вывода. Каждой программе доступны три потока ввода/вывода:
· Стандартный ввод (дескриптор 0)
· Стандартный вывод (дескриптор 1)
· Стандартный вывод ошибок (дескриптор 2)
Все эти потоки по умолчанию связаны с терминалом.
Для переназначения ввода/вывода существуют различные средства языка, приведенные в табл. 4.
Таблица 4
Элемент языка | Пояснение |
>файл | Переназначение стандартного вывода в указанный файл |
>>файл | Добавление в указанный файл данных стандартного вывода |
<файл | Получение стандартного ввода из указанного файла |
команда1 | команда2 | Передача стандартного потока вывода команды1 на поток ввода команды2 (конвейер) |
n >файл | Переключение потока вывода с дескриптором n в указанный файл |
Пример:
ls>f1.bb
Команды в shell обычно имеют следующий формат:
<имя команды> <флаги> <аргумент(ы)>
Например:
ls - ls /usr/bin
(ls – имя команды выдачи содержимого каталога,
- ls – флаги ("-" – признак флагов, l – длинный формат, s –
объем файлов в блоках).
/usr/bin – каталог, для которого выполняется команда).
Эта команда выдаст на экран в длинном формате содержимое
каталога /usr/bin, при этом добавит информацию о размере
каждого файла в блоках.
Структура командной строки.
1. команда – по одной команде в строке
2. команда1 ; команда2 ... – последовательное выполнение команд
Примеры:
date; who
date; who | wc – в конвейер связаны команды who и wc
(date; who)| wc – в конвейер связаны команды date; who и команда wc
3. команда1 & команда2 – каждая команда является отдельным процессом, запускаемым независимо от другого.
Пример:
(sleep 5; data) & data – результат второй команды data выдается раньше, так как в первом процессе сначала задержка на 5 секунд, а затем выдача даты и времени.
4. команда1 && команда2 – команда2 выполняется только при успешном выполнении команды1 (нулевом коде возврата)
Пример:
grep sergey file1 && grep sergey file2
5. команда1 || команда2 – команда2 выполняется только при неуспешном выполнении команды1.
Управление последовательностью действий.
1.Условный оператор if:
if [условие1] ;then
команда1
команда2
...
[elif [условие2]
команда1
команда2
...
]
[else
команда1
команда2
...
]
fi
Здесь квадратные скобки (кроме скобок, в которые заключаются условия) показывают необязательные элементы. Конструкция elif может повторяться несколько раз.
Выражение в условии может быть одним из значений, приведенных в табл. 5, и считается равным 0, если выражение истинно, и равным 1, если выражение ложно:
Примеры:
if [! - f $HOME/ppp] ; then
echo файл не существует
fi
if [ x myfile] ;then
echo Запускаем программу myfile
myfile
fi
Таблица 5
Тип выражения | Выражение | Назначение |
Выражения над файлами | -s файл | Размер файла больше 0 |
-r файл | Для файла разрешен дос-туп по чтению |
-x файл | Для файла разрешен дос-туп по выполнению | |
-f файл | Файл существует и явля-ется обычным файлом | |
-d файл | Файл существует и является каталогом | |
Выражения над строками | -z строка | Строка имеет нулевую длину |
-n строка | Длина строки больше 0 | |
cтрока1 = строка2 | Две строки равны | |
cтрока1 != строка2 | Две строки не равны | |
Сравнение целых чисел | число1 - eq число2 | Числа равны |
число1 - ne число2 | Числа не равны | |
число1 - lt число2 | Число1 < числа2 | |
число1 - le число2 | Число1 <= числа2 | |
число1 - gt число2 | Число1 > числа2 | |
число1 - ge число2 | Число1 >= числа2 | |
Логические операторы | ! выражение | Оператор НЕ (NOT) |
выражение1 - a выражение2 | Оператор И (AND) | |
выражение1 - o выражение2 | Оператор ИЛИ (OR) |
2. Разветвление во многих направлениях
case имя in
шаблон1)
команда1
команда2
...;;
шаблон2)
команда1
команда2
...;;
....
[ *)
команда1
команда2
...;;]
esac
Квадратные скобки – признак необязательности конструкции. Шаблон "*)" действует тогда, когда нет совпадения ни с одним из конкретных шаблонов.
Пример:
state=$1
case $state in
'copy') cp x1 /x2
;;
'move')mv x1 /x2
;;
*) echo usage: $0 copy or $0 move
::
esac
3. Цикл while
while условие
do
команда1
команда2
...
done
Цикл выполняется, пока условие равно 0.
Пример:
A=$1
while cmp $a $2
do
shift
done
echo $2
4. Цикл until
until условие
do
команда1
команда2
...
done
Цикл выполняется, пока условие не равно 0.
Пример:
cat myfile |
until! read fam im ot voz
# Построчно считываются записи файла myfile и слова строки записываются в #переменные fam, im, ot, voz
do
echo Господин $fam в возрасте $voz
done
4. Цикл for
for имя [in список]
do
команда1
команда2
...
done
Цикл выполняется столько раз, сколько слов в списке. При этом "имя" последовательно принимает значение каждого слова из списка. Квадратные скобки – признак необязательности конструкции. Отсутствие конструкции равносильно in $* (для всех параметров ).in * означает перебор всех файлов текущего каталога.
Пример:
for dir in /tmp /usr/tmp /home/tmp
do
find $dir! - type d - atime +7 - exec rm $dir\*
done
Удаление всех файлов в указанных каталогах, последний доступ к которым осуществлялся более недели назад
Команды по группам.
1.Команды работы с файлами
· cat файл1 файл2 ...
Объединение и вывод на стандартный вывод содержимого нескольких файлов.
· chmod режим файл1 файл2 ...
Изменение прав доступа для файлов. В общем случае режим может записываться в символическом и в восьмеричном виде.
Режим в символическом виде имеет вид:
[ugoa][+-=] [rwx], где
u – владелец; g – группа; o – прочие пользователи; a – все пользователи
+ – добавить разрешение доступа; = – заменить разрешение доступа;
- – удалить разрешение доступа
r – доступ по чтению; w – доступ по записи; x – доступ по выполнению.
· cmp файл1 файл2
Сравнение содержимого двух файлов с выводом различий (строка и символ).
· cp старое_имя новое_имя
· cp файл1 файл2 ... каталог
Копирование файлов. Во второй форме все файлы копируются в указанный каталог.
· ln старое_имя новое_имя
Создание ссылки на файл
· mv старое_имя новое_имя
· mv файл1 файл2 ... каталог
Переименование файла. Во второй форме все файлы перемещаются в указанный каталог.
· rm файл1 файл2 ...
Удаление файлов.
2. Команды работы с каталогами.
· mkdir каталог
Создание каталога
· cd каталог
Смена текущего каталога
· ls [-cdrtu] [каталог1 каталог2 ...]
Вывод содержимого каталога (-ов). Если каталог не указан, то выводится содержимое текущего каталога. Режимы:
-c – сортировка по дате последней модификации дескриптора
-d – вывод только списка имен каталогов
-r – изменить порядок сортировки на обратный
-t – сортировка по времени последней модификации
-u – сортировка по времени последнего доступа к файлу
· rmdir каталог
Удаление каталога
3. Команды ввода.
· read имя1 имя2 ...
Считывание строки из потока ввода и присвоение последовательных слов переменным. Если число слов в строке больше числа переменных, то последняя переменная сохранит все оставшиеся слова.
4.Команды вывода
· echo текст
Вывод текста
· pwd
Вывод полного имени текущего каталога
5.Команды-фильтры.
· find начальный_каталог булевское_выражение
Поиск файла, удовлетворяющего условию, начиная с указанного каталога. Булевское выражение задает вид условия. Его виды приведены в табл. 6:
Таблица 6
Вид выражения | Пояснения | |
-name имя файла | Имя файла совпадает с указанным | |
-type x | Тип файла совпадает с указанным (x может принимать значения: · f - обычный файл · d - каталог | |
-links [±]целое | Имеется указанное число ссылок на выбранный файл | |
-user имя | Выбранный файл принадлежит пользователю, имеющему указанное имя | |
-size [±]целое | Выбранный файл занимает указанной число блоков диска | |
-atime [±]целое | Доступ к выбранному файлу был осуществлен указанное число дней назад | |
-mtime [±]целое | Выбранный файл был модифицирован указанное число дней назад |
|
-exec команда | Для выбранного файла выполняется команда |
|
"+целое" означает условие "больше", "-целое" означает условие "меньше".
Для получения сложных булевских выражений используются логические операции:
! НЕ (NOT), - a И(AND), - o ИЛИ (OR)
Пример:
find./ - name cx* - atime+30 - exec rm
Поиск в текущем каталоге файлов, имена которых начинаются на "сх" и, если доступ к ним осуществлялся более 30 дней назад, удаление их.
· grep [-lnvx] строка [файл]
Поиск строки в содержимом текстового файла. Квадратные скобки – признак необязательных параметров. Если файл не указан, он принимается из конвейера. Параметры имеют следующий смысл:
-l – вывод имени файла, содержащего заданную строку
-n – вывод номеров строк, содержащих заданную строку
-v – вывод строк файла, не содержащих заданную строку
-x – вывод строк файла, полностью совпадающих с заданной строкой
Пример:
grep -v Май my*
Выдача на экран строк файлов, имена которых начинаются на "my" и которые не содержат слова "Май"
· sort [-mdnrtx] [+i. j [-i. j] ] [-o выходной_файл] [файл1 файл2 ...]
Сортировка содержимого нескольких файлов как единого целого. Квадратные скобки – признак необязательных параметров. Если файл не указан, он принимается из конвейера.
Режимы:
-m – объединить содержимое нескольких файлов без сортировки;
-d – установить алфавитный порядок сортировки;
-n – установить порядок сортировки строк, содержащих лишь числовые величины, по их значениям;
-r – установить порядок сортировки по убыванию;
-tx – установить символ x в качестве разделителя полей строки;
+i. j – считать первым символом ключа сортировки (j+1)-ый символ (i+1)-го поля строки;
-i. j – считать последним символом ключа сортировки (j+1)-ый символ (i+1)-го поля строки.
Пример:
sort - d - t* +o rez myfile
Сортировка файла myfile по возрастанию символов1-6 второго поля; поля строк разделяются символом "*"; отсортированный файл записывается в файл rez.
· wc [-clw] [файл1 файл2 ...]
Вывод количества символов, слов и строк в файлах. Квадратные скобки – признак необязательных параметров. Если файл не указан, он принимается из конвейера.
Режимы:
-c – вывод числа символов;
-l – вывод числа строк;
-w – вывод числа слов.
6.Команды для работы с пользователями.
· ps
Вывод информации о состоянии процессов
· who [am i]
Вывод имен всех пользователей, работающих в данный момент, или имя того пользователя, который вызвал на выполнение команду (если задано am i).
1. Г. Борн. Руководство разработчика Microsoft на Windows Script Host 2.0. Сер. Мастер – класс. Изд-во Питер. «Русская редакция». 20с.
2. Д. Тейнсли. Язык shell Linux и UNIX Издательская группа BHV, Киев. 20с.
Учебное издание
Операционные системы
Составитель Сосинская Софья Семеновна
Программа, методические указания
Редактор


