Декабрь, 23

Знаменатель

(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Проекты | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация (English)

Сложная командная строка. Конвейер

Цели работы

Получить навыки использования в командной строке таких средств языка bash, как конвейер, подстановка команд, группировка команд в скобках, условное выполнение с использованием операторов && и ||, освоить следующие команды, определенные стандартом Posix.2:

time find cut sort uniq tee nl du uname mesg write

Описание работы

Создайте отдельную директорию для лабораторной работы. Все строки-команды, полученные в ходе решения заданий, сохраните в файле commands.

Шаг 1 (справка). Используя справочные руководства man, whatis, apropos, info изучите общее назначение команд, перечисленных в разделе "Цели работы".

Шаг 2 (конвейер). Используя справочные материалы по указанным командам, средства перенаправления ввода-вывода и конвейер реализуйте командные строки, позволяющие получить описанные ниже результаты. Каждую полученную строку отправьте в файл commands.

 #   Задание   Команды 
1 Подсчитать количество всех объектов (включая скрытые файлы) в текущем каталоге ls, wc
2 Выполнить поиск файла README от корневого каталога / и подсчитать затраченное на поиск время time, find
3 Вывести входные имена всех пользователей, работающих в системе who, cut, sort, uniq
4 Вывести содержимое файла commands (с 3 предыдущими командами) в файл commands2 и на экран с нумерацией непустых строк cat, tee или nl, tee
Для любой из реализованных строк-команд объясните назначение time и продемонстрируйте разницу следующих конструкций:

time строка-команда
time ! строка-команда

Шаг 3 (подстановка команды).

 #   Задание   Команды 
1 Вывести полную информацию о текущем каталоге. Подсказка: для команды ls найти дополнительный ключ, который позволяет выдавать имя каталога, а не его содержимое. Объясните, что будет в случае, если имя каталога содержит пробельные символы и как исправить ошибки ls, pwd
2 Вывести размер всех файлов в домашнем каталоге, которые являтся директориями. Вывод ошибок команды find необходимо подавить. Объясните ошибку, которую выдает команда du, если имя каталога содержит пробельные символы du, find

Шаг 4 (группировка команд, условное выполнение).

 #   Задание   Команды 
1 Используя скобки для группировки команд, напишите командную строку, которая выводит в файл sys.info следующую информацию об используемой системе: a) имя системы; б) имя узла сети; в) архитектуру компьютера; г) версию ядра ОС. uname
2 Проверить, могут ли пользователи отправлять на ваш терминал сообщения и вывести на экран в зависимости от результата "Сообщения разрешены" или "Сообщения запрещены" mesg, echo или write, whoami, echo

Критерии оценки работы

За задание можно получить 8 баллов. При этом задание должно быть выполнено полностью, сдаваться в срок, автор обязан понимать собственное решение и уметь объяснить суть основных понятий: командный интерпретатор, простая команда shell, параметры команды (опции), код возврата, метасимвол, экранирование, перенаправление.

Защищая работу, Вы должны продемонстрировать 1) умение работать со справочной системой (man, whatis, apropos, info); 2) знание общего назначения приведенных в разделе "Цели работы" команд (например, echo — вывод строки текста); 3) умение использовать конвейер, подстановку команды, группировку команд, условное выполнение команд.