3. Порядок выполнения работы
1. Ознакомиться с файловой структурой ОС LINUX. Изучить команды работы с файлами.
2. Используя команды ОС LINUX, создать два текстовых файла.
3. Полученные файлы объединить в один файл и его содержимое просмотреть на экране.
4. Создать новую директорию и переместить в нее полученные файлы.
5. Вывести полную информацию обо всех файлах и проанализировать уровни доступа.
6. Добавить для всех трех файлов право выполнения членам группы и остальным пользователям.
7. Просмотреть атрибуты файлов.
8. Создать еще один каталог.
9. Установить дополнительную связь объединенного файла с новым каталогом, но под другим именем.
10. Создать символическую связь.
11. Сделать текущим новый каталог и вывести на экран расширенный список информации о его файлах.
12. Произвести поиск заданной последовательности символов в файлах текущей директории и получить перечень соответствующих файлов.
13. Получить информацию об активных процессах и имена других пользователей.
14. Сдать отчет о работе и удалить свои файлы и каталоги.
4. Контрольные вопросы
1. Что считается файлами в OC LINUX?
2. Объясните назначение связей с файлами и способы их создания.
3. Что определяет атрибуты файлов и каким образом их можно просмотреть и изменить?
4. Какие методы создания и удаления файлов, каталогов Вы знаете?
5. В чем заключается поиск по шаблону?
6. Какой командой можно получить список работающих пользователей и сохранить его в файле?
Создание и выполнение командных файлов в среде ос linux
1. Цель работы
Целью работы является изучение методов создания и выполнения командных файлов на языке Shell — интерпретатора.
2. Теоретическая часть
В предыдущих лабораторных работах взаимодействие с командным интерпретатором Shell осуществлялось с помощью командной строки. Однако, Shell является также и языком программирования, который применяется для написания командных файлов (shell — файлов). Командные файлы также называются скриптами и сценариями. Shell — файл содержит одну или несколько выполняемых команд (процедур), а имя файла в этом случае используется как имя команды.
2.1. Переменные командного интерпретатора
Для обозначения переменных Shell используется последовательность букв, цифр и символов подчеркивания; переменные не могут начинаться с цифры. Присваивание значений переменным проводится с использованием знака = , например, РS2 = ‘
— позиционные переменные вида $n, где n — целое число;
— простые переменные, значения которых может задавать пользователь или они могут устанавливаться интерпретатором;
— специальные переменные # ? — ! $ устанавливаются интерпретатором и позволяют получить информацию о числе позиционных переменных, коде завершения последней команды, идентификационном номере текущего и фонового процессов, о текущих флагах интерпретатора Shell.
Простые переменные. Shell присваивает значения переменным:
Здесь переменной x присвоено значение z.
Позиционные переменные. Переменные вида $n, где n — целое число, используются для идентификации позиций элементов в командной строке с помощью номеров, начиная с нуля. Например, в командной строке
саt text_1 text_2. text_9
аргументы идентифицируются параметрами $1. $9. Для имени команды всегда используется S0. В данном случае $0 — это саt, $1 — text_1, $2 — text_2 и т.д. Для присваивания значений позиционным переменным используется команда set, например:
set arg_1 arg_2. arg_9
здесь $1 присваивается значение аргумента arg_1, $2 — arg_2 и т.д.
Для доступа к аргументам используется команда echo, например:
Для получения информации обо всех аргументах (включая последний) используют метасимвол *. Пример:
arg_2 arg_3 . arg_10 arg_11 arg_12
С помощью позиционных переменных Shell можно сохранить имя команды и ее аргументы. При выполнении команды интерпретатор Shell должен передать ей аргументы, порядок которых может регулироваться также с помощью позиционных переменных.
Специальные переменные. Переменные — ? # $ ! устанавливаются только Shell. Они позволяют с помощью команды echo получить следующую информацию:
— – текущие флаги интерпретатора (установка флагов может быть изменена командой set);
# – число аргументов, которое было сохранено интерпретатором при выполнении какой-либо команды;
? – код возврата последней выполняемой команды;
$ – числовой идентификатор текущего процесса PID;
! – PID последнего фонового процесса.
Лаба 3
Целью работы является изучение методов создания и выполнения командных файлов на языке Shell — интерпретатора.
- Ход работы:
- Создали каталог и в нем создали файл со своей фамилией и текущим временем (рисунок 1).
Рисунок 1 – Создание каталога DIR и файла Myfile.txt
- Переименовали файл Myfile.txt в Old_Myfile.txt с помощью команды mv и установили у него атрибут ReadOnly (рисунок 2).
- Вычислили омическое сопротивление двух параллельно соединенных резисторов. Создадили shell-файл с программой, позволяющей вычислить омическое сопротивление (рисунок 3).
- Переведем заданное десятичное число в шестнадцатеричную форму. Ввод десятичного числа с клавиатуры в диапазоне от 0 до 4096. Создадим shell-файл и запишем в него код программы (рисунок 4).
- Организуем запрос и ввод имени пользователя, сравнение с текущим логическим именем пользователя и вывод сообщения: верно/неверно (рисунок 5).
- Создадим shell-файл, выполняющий запрос и ввод имени файла в текущем каталоге и вывод сообщения о типе файла (рисунок 6).
- Создадим shell-файл, выполняющий циклическое чтение системного времени и очистку экрана в заданный момент (рисунок 7).
- Создали скрипт, выполняющий циклический просмотр списка файлов и выдачу сообщения при появлении заданного имени в списке (рисунок 8).
- Вывод на экран списка параметров командной строки с указанием номера каждого параметра.
- Присвоение переменным А, В и С значений 10, 100 и 200, вычисление и вывод результатов по формуле D=(A*2 + B/3)*C.
- Формирование файла со списком файлов в домашнем каталоге, вывод на экран этого списка в алфавитном порядке и общего количества файлов.
- Переход в другой каталог, формирование файла с листингом каталога и возвращение в исходный каталог.
- Запрос и ввод имени пользователя, сравнение с текущим логическим именем пользователя и вывод сообщения: верно/неверно.
- Запрос и ввод имени файла в текущем каталоге и вывод сообщения о типе файла.
- Циклическое чтение системного времени и очистка экрана в заданный момент.
- Циклический просмотр списка файлов и выдача сообщения при появлении заданного имени в списке.
Рисунок 2 – Изменение файла Myfile.txt
Рисунок 3 – Вычисление омического сопротивления
Рисунок 4 – Перевод десятичного числа в шестнадцатеричную форму
Рисунок 5 – Сравнение введенного имени пользователя с текущим
Рисунок 6 – Определение типа файла
Рисунок 7 – Циклическое чтение времени и очистка экрана
Вывод: В ходе данной лабораторной работы были изучены методы создания и выполнения командных файлов на языке Shell — интерпретатора.
3. Ответы на контрольные вопросы:
3.1. Какое назначение имеют shell — файлы?
Командные файлы также называются скриптами и сценариями. Shell — файл содержит одну или несколько выполняемых команд (процедур), а имя файла в этом случае используется как имя команды. Это делает возможным для пользователя выполнение целого набора команд, используя при этом только один вызов имени файла в командной строке.
3.2. Как создать shell — файл и сделать его выполняемым?
Создать файл с расширением .sh, например командой: touch shell_file.sh.
При заполнении файла на первой строке указать путь к интерпретатору: #! /bin/sh.
3.3. Какие типы переменных используются в shell — файлах?
Простые переменные. Значения переменных может задавать пользователь или они могут устанавливаться интерпретатором:
Здесь переменной x присвоено значение z.
Позиционные переменные. Переменные вида $n, где n — целое число, используются для идентификации позиций элементов в командной строке с помощью номеров, начиная с нуля. Например, в командной строке
аргументы идентифицируются параметрами $1. $9. Для имени ко-манды всегда используется S0. В данном случае $0 — это саt, $1 — text_1, $2 — text_2 и т.д. Для присваивания значений позиционным переменным используется команда set, например:
здесь $1 присваивается значение аргумента arg_1, $2 — arg_2 и т.д.
С помощью позиционных переменных Shell можно сохранить имя команды и ее аргументы. При выполнении команды интерпретатор Shell должен передать ей аргументы, порядок которых может регулироваться также с помощью позиционных переменных.
Специальные переменные. Переменные — ? # $ ! устанавливаются только Shell. Они позволяют с помощью команды echo получить следующую информацию:
— – текущие флаги интерпретатора (установка флагов может быть изменена командой set);
# – число аргументов, которое было сохранено интерпретатором
при выполнении какой-либо команды;
? – код возврата последней выполняемой команды;
$ – числовой идентификатор текущего процесса PID;
! – PID последнего фонового процесса.
3.4. В чем заключается анализ цепочки символов?
При анализе цепочки символов можно, например сравнить её с другой цепочкой или провести подсчет числа символов в ней.
Сопоставление символов с указанием числа совпадающих символов:
concur=` expr «abcdefgh» : «abcde»`
Операция сопоставления обозначается двоеточием (:). Результат — переменная соncur.
Подсчет числа символов в цепочках символов. Операция выполняется с использованием функции length в команде expr:
chain=»The program is written in Assembler»
Здесь результат подсчета обозначен переменной str.
3.6. Как производится управление программами?
Команды true и false служат для установления требуемого кода завершения процесса: true — успешное завершение, код завершения 0; false — неуспешное завершение, код может иметь несколько значений, с помощью которых определяется причина неуспешного завершения. Коды завершения команд используются для принятия решения о дальнейших действиях в операторах цикла while и until и в условном операторе if. Многие команды LINUX вырабатывают код завершения только для поддержки этих операторов.
3.7. Назовите операторы создания циклов.
Оператор цикла с условием while true и while false. Команда while (пока) формирует циклы, которые выполняются до тех пор, пока команда while определяет значение следующего за ним выражения как true или false. Фоpмат оператора цикла с условием while true:
Здесь list1 и list2 — списки команд. While проверяет код возврата списка команд, стоящих после while, и если его значение равно 0, то выполняются команды, стоящие между do и done. Оператор цикла с условием while false имеет формат:
В отличие от предыдущего случая условием выполнения команд между do и done является ненулевое значение возврата. Программный цикл может быть размещен внутри другого цикла (вложенный цикл). Оператор break прерывает ближайший к нему цикл. Если в программу ввести оператор break с уровнем 2 (break 2), то это обеспечит выход за пределы двух циклов и завершение программы.
Оператор continue передает управление ближайшему в цикле оператору while.
Оператор цикла с перечислением for:
где name — переменная; wordlist — последовательность слов; list — список команд. Переменная name получает значение первого слова последовательности wordlist, после этого выполняется список команд, стоящий между do и done. Затем name получает значение второго слова wordlist и снова выполняется список list. Выполнение прекращается после того, как кончится список wordlist.
Ветвление по многим направлениям case. Команда case обеспечивает ветвление по многим направлениям в зависимости от значений аргументов команды. Формат:
3десь list1, list2 . listn — список команд. Производится сравнение шаблона string с шаблонами s1, s2 . sk . sn. При совпадении выполняется список команд, стоящий между текущим шаблоном sk и соответствующими знаками ;;. Пример:
echo -n ‘Please, write down your age’
test $age -le 20) echo ‘you are so young’ ;;
test $age -le 40) echo ‘you are still young’ ;;
test $age -le 70) echo ‘you are too young’ ;;
*)echo ‘Please, write down once more’
В конце текста помещена звездочка * на случай неправильного ввода числа.
11_лаб работа. создание и выполнение командных файлов в среде ос linux
Единственный в мире Музей Смайликов
Самая яркая достопримечательность Крыма
Скачать 359.52 Kb.
Кыргызский государственный технический университет
Кафедра «Программное обеспечение компьютерных систем»
дисциплина: «Операционные системы»
тема: «СОЗДАНИЕ И ВЫПОЛНЕНИЕ КОМАНДНЫХ ФАЙЛОВ
Цель работы: Целью работы является изучение методов создания и выполнения командных файлов на языке Shell — интерпретатора.
Составьте и выполните shell — программы, включающей следующие действия:
Очистил экран если совпадает с текущим временем