Сложная командная строка. Конвейер
Цели работы
Получить навыки использования в командной строке таких средств языка 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 ! строка-команда
Шаг 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) умение использовать конвейер, подстановку команды, группировку команд, условное выполнение команд.