Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Тема: Программные и аппаратные принципы ввода-вывода

Практическая работа № 14, 15

Цели: Ознакомиться с основами основными принципами организации ввода-вывода в ОС Linux при использовании командной оболочки Shell.

Теоретический материл

Обычно в ОС UNIX доступны несколько интерпретаторов. Наиболее распространены Bourne-shell (или просто - shell), C-shell, Korn-shell. В идейном плане все эти интерпретаторы близки и в дальнейшем речь будет идти о стандартном Shell (/bin/sh).

Работая на командном языке, пользователь может вводить переменные, присваивать им значения, выполнять простые команды, строить составные команды, управлять потоком выполнения команд, объединять последовательность команд в процедуры (командные файлы). На уровне командного языка доступны такие свойства системы как соединение процессов через программный канал, направление стандартного ввода/вывода в конкретные файлы, синхронное и асинхронное выполнение команд.

Если указанный интерпретатору файл является текстовым и содержит команды командного языка (командный файл) и при этом имеет разрешение на выполнение (помечен "х"), Shell-интерпретатор интерпретирует и выполняет команды этого файла. Другой способ вызова командного файла - использование команды sh (вызов интерпретатора), в котором первым аргументом указывается имя командного файла.

Коротко перечислим средства группирования команд и перенаправления ввода/вывода:

· cmd1 arg...; cmd2 arg...;... cmdN arg... - последовательное выполнение команд;

· cmd1 arg...& cmd2 arg...&... cmdN arg... асинхронное выполнение команд;

· cmd1 arg... && cmd2 arg... - зависимость последующей команды от предыдущей таким образом, что последующая команда выполняется, если предыдущая выдала нулевое значение;

· cmd1 arg... || cmd2 arg... - зависимость последующей команды от предыдущей таким образом, что последующая команда выполняется, если предыдущая выдала ненулевое значение;

· cmd > file - стандартный вывод направлен в файл file;

· cmd >>

· file - стандартный вывод направлен в конец файла file; cmd < file - стандартный ввод выполняется из файла file;

· cmd1 | cmd2 - конвейер команд, в котором стандартный вывод команды cmd1 направлен на стандартный вход команды cmd2.

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

1. $? - значение, возвращаемое последней выполняемой командой;

2. $$ - идентификационный номер процесса Shell;

3. $! - идентификационный номер фонового процесса, запускаемого

1. интерпретатором Shell последним;

4. $# - число аргументов, переданных в Shell;

5. $- - флаги, переданные в Shell.

Для отмены специальных символов ($,|,пробел и т.д.) в Shell-программах существуют следующие правила:

1. 1. если символу предшествует обратная косая черта, то его специальный символ отменяется;

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

При вызове Shell-программ им могут передаваться параметры. Соответствующие аргументы в Shell-программах идентифицируются $1, $2, $3 и т.д. Кроме того, переменная $0 соответствует имени выполняемой Shell-программы, а переменная $# - числу аргументов в команде.

Shell-интерпретатор дает возможность выполнять подстановку результатов выполнения команд в Shell-программах. Если команда заключена в одиночные обратные кавычки, то интерпретатор Shell выполняет эту команду и подставляет вместо нее полученный результат.

Наиболее важные команды для составления Shell-программ:

· команда echo выводит в выходной поток значения своих аргументов;

· команда expr выполняет арифметические действия над своими аргументами;

· команда eval обеспечивает дополнительный уровень подстановки своих аргументов, а затем их выполнение;

· команда test с соответствующими ключами проверяет необходимое условие;

· команда sleep служит для реализации задержки.

Программные конструкции Shell-программ:

Задание.

1. Изучить программные средства языка Shell (структура команды, группирование команд, перенаправление ввода-вывода, конвейер команд, Shell-переменные, макроподстановка результатов в Shell-командах, программные конструкции). Ознакомиться с заданием к лабораторной работе.

2. Ознакомится с организацией ввода-вывода в Linux.

3. Для указанного варианта составить Shell-программу, выполняющую требуемые действия в файловой системе.

4. Отладить и оттестировать составленную Shell-программу.

Варианты заданий

1. Shell-программа подсчитывает количество и выводит список всех файлов (без каталогов) в порядке уменьшения их длин в поддереве, начиная с каталога, имя которого задано параметром Shell-программы. Форма вывода результата:

2. Shell-программа подсчитывает количество и выводит перечень каталогов в хронологическом порядке (по дате создания) в поддереве, начиная с каталога, имя которого задано параметром Shell-программы. Форма вывода результата:

3. Задание варианта 1, но список файлов в каталоге выводится в алфавитном порядке.

4. Shell-программа объединяет все временные файлы с указанным суффиксом (например,.tmp) в поддереве, начиная с каталога, имя которого задано параметром Shell-программы. Результат объединения помещается либо в указанный Shell-программой файл, либо выводится на экран в форме:

5. Shell-программа периодически с некоторым интервалом удаляет все временные файлы с указанным суффиксом (например,.tmp) в поддереве, начиная с каталога, имя которого задано параметром Shell-программы и выводит при этом список объединенных файлов в форме, предложенной в варианте 1.

6. Shell-программа просматривает каталог, имя которого указано параметром Shell-программы и выводит имена встретившихся каталогов. Затем осуществляет переход в родительский каталог, который становится текущим и повторяются указанные действия до тех пор, пока текущим каталогом не станет корневой каталог. Форма вывода результата:

7. Задание, аналогичное варианту 6, но выводятся не каталоги, а файлы каталогов.

8. Shell-программа выводит имена тех каталогов в каталоге, которые в себе не содержат каталогов. Имя каталога задано параметром Shell-программы.

9. Shell-программа выводит имена тех каталогов в каталоге, которые в себе содержат каталоги. Имя каталога задано параметром Shell-программы.

10. Shell-программа выводит содержимое каталога, имя которого указано параметром Shell-программы. При выводе сначала перечисляются имена каталогов, а затем в алфавитном порядке имена файлов с указанием их длин, даты создания и числа ссылок на них.

Контpольные вопpосы

1. Что такое внутренние и внешние команды Shell-интерпретатора? Приведите примеры внутренних команд.

2. Какие существуют средства группирования команд? Приведите примеры использования.

3. Как осуществляется перенаправление ввода-вывода?

4. В чем сущность конвейера команд? Приведите примеры использования.

5. Как средствами Shell выполнить арифметические действия над Shell-переменной?

6. Каковы правила генерации имен файлов?

7. Как выволняется подстановка результатов выполнения команд?

8. Как интерпретировать строку cmd1 & cmd2 &?

9. Как интерпретировать строку cmd1 && cmd2 &?

10. Как интерпретировать строку cmd1 || cmd2 &?

11. В каком режиме выполняется интерпретатор команд Shell?

12. Кем и в каком режиме осуществляется чтение потока символов с терминала интерпретатором Shell?

Задание на дом.

Выполнить отчет по практической работе.



<== предыдущая лекция | следующая лекция ==>
Обстоятельство в русском языке: 7 видов | Методика реалізації основних завдань початкового курсу інформатики
Поделиться с друзьями:


Дата добавления: 2016-10-07; Мы поможем в написании ваших работ!; просмотров: 571 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Свобода ничего не стоит, если она не включает в себя свободу ошибаться. © Махатма Ганди
==> читать все изречения...

2373 - | 2121 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.