Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС / Методические рекомендации по выполнению лабораторных работ.doc
Скачиваний:
243
Добавлен:
11.04.2015
Размер:
1.17 Mб
Скачать

2. Командные файлы в Linux.

Для того чтобы текстовый файл можно было использовать как командный, существует несколько возможностей.

Пусть с помощью редактора создан файл с именем f1, содержащий одну строку следующего вида: date; pwd; ls. Можно вызвать оболочку shell как команду, обозначаемую sh, и передать ей файл fl, как аргумент или как перенаправленный вход: $ sh fl или $ sh < fl. В результате выполнения любой из этих команд будет выдана дата, затем имя текущего каталога, а потом содержимое каталога.

Файл можно выполнить и в текущем экземпляре shell. Для этого существует специфическая команда . (точка): .fl.

Более удобный вариант работы с командным файлом - это превращение его в выполняемый файл, т.е. просто сделать его командой (запускающей этот файл по его названию), что достигается изменением кода защиты. Для этого надо разрешить выполнение этого файла. Например, chmod 711 fl сделает у этого файла код защиты «rwx--x--x». Тогда простой вызов fl приведет к выполнению тех же трех команд, которые были записаны в файл.

Результат будет тот же, если файл с содержимым date; pwd; ls будет представлен в виде:

date

pwd

ls

так как переход на другую строку также является разделителем в последовательности команд.

Начинать командный файл надо всегда с пустой строки или пустого оператора «:». Их выполнение происходит в режиме интерпретации с помощью shell-интерпретатора.

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

Входной поток в команде может быть задан четырьмя способами: указанием адреса входного потока справа от команды; отсутствием в команде прямого указания на адрес входного потока; перенаправлением входного потока с помощью символа «<» и передачей во входной поток результата работы предыдущей команды (конвейер, или серфинг, или piping).

Выходной поток может быть задан пятью способами: по умолчанию, без явного указания на выходной поток; явным указанием выходного потока; перенаправлением выходного потока одной команды на вход другой (символ |); перенаправлением в начало файла (символ «>»); перенаправлением в конец файла (символ «>>»).

Выходной поток одной команды может быть направлен во входной поток другой команды посредством организации конвейера команд. Для создания конвейера команд между объединяемыми командами ставится знак |.

Для вывода всех файлов текущего каталога на экран служит команда ls -1. Для ограничения выходного потока этой команды, вывода каталога отдельными фрагментами, служит команда more. Соединив эти две команды в конвейер ls –l| more получим, что содержимое текущего каталога готовится командой ls -l, выходной поток которой знаком конвейера | направлен на вход команды more. А команда more выводит информацию на экран с временными паузами.

Другие команды при соединении в конвейер позволяют получать результат, который каждая команда в отдельности получить не позволит. Примеры:

Показать общее количество файлов в текущем каталоге: ls –l| wc –l.

Показать общее количество пользователей, работающих в данный момент на ЭВМ: who | we –l.

Показать последние 10 раз, когда заходил в систему пользователь с текущим login'ом «vasjkov»: last vasjkov | head.

Отсортировать список файлов по алфавиту, подготовить его к печати и отпечатать его: sort list | pr | lpr.

Показать состав работающих на ЭВМ пользователей в алфавитном порядке: who | sort.

Достать страницу из справочной системы shell и отправить ее по почте Алексею Васькову: man sh | mail vasjkov.

Сформировать список содержимого текущего каталога, выделить размер каждого файла из списка, список отсортировать по цифрам, показать только последний (а следовательно, наибольший) файл из списка: ls -l | awk ' {print $5}' | sort -n | tail –l.

Файл «textfile» отсортировать и напечатать: sort textfile | lp.

Найти в текущем каталоге файлы, имена которых заканчиваются на 1994, найти в этих файлах слово «profits» и напечатать строки, содержащие это слово. Поиск требуемого слова в файлах произвести командой grep: cat *. 1994 | grep profits | lp.

Выдать на экран список файлов текущего каталога (команда list) в 4 колонки (опция -4 команды рг) по 5 строк на странице (опция -l5) и не выдавать заголовок списка и конечное сообщение (опция -t): ls | pr -t -l5 -4.

Сформировать список файлов текущего каталога, преобразовать его в 3 колонки и распечатать: ls | pr -3 | lpr.

Файл «fruits» отсортировать и вывести на экран колонками, как при табуляции: sort fruits | sp.

Определить, кто входит в систему с терминала ttyl5: who |grep ttyl5.

Вывести неповторяющийся список элементов файла animals с указанием числа повторений этих элементов. Такой способностью обладает команда uniq с опцией -с: sort animals | uniq -с.

Найти в телефонном справочнике phone.lst абонента по двум критериям поиска: Тэд, живущий в Лос Анжелесе: grep Ted phone.lst | grep 'Los Angeles'.

Отформатировать текст из файла text_5 в 2 колонки перед выводом на печать: рr -2 text_5 | lpr.

Перед печатью файл data_15 сначала упорядочить, затем разделить на страницы: sort data 15 | pr | lpr.