Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОПЕРАЦИОННЫЕ СИСТЕМЫ И ОБОЛОЧКИ.doc
Скачиваний:
46
Добавлен:
21.09.2019
Размер:
799.74 Кб
Скачать

6.6.5. Работа с файлами

В ОС UNIX имеется много команд, которые помогают работать с файлами:

- осуществлять их поиск внутри файлового дерева;

- находить информацию внутри файла по шаблону;

- сравнивать содержимое двух файлов и т.д.

Ниже будет рассмотрена группа такого типа команд.

Для поиска файлов и каталогов используется команда find. Путем использования

различных опций (в этой команде опции задаются не отдельными символами, как это

делается в большинстве команд UNIX, а словами) можно указать различные критерии

поиска, например, поиск по имени (-name), поиск по длине файла (-size), поиск по типу

файла (-type) и т.д.

find имя_каталога расширение [расширение …]

Команда осуществляет поиск по маршруту от заданного имени_каталога по всем

нижестоящим каталогам. Расширение содержит спецификацию критерия поиска и имен

искомых файлов. Этот аргумент команды может содержать, также список действий,

выполняемых с каждым найденным файлом. Список расширений анализируется слева

направо и, если проверка по критерию дает истину, выполняется следующая проверка.

Выражение расширение вычисляется как логическая операция И. Если условие не

выполняется, проверка для текущего файла завершается и анализируется следующий

файл.

Наиболее полезными являются –print (ее желательно указывать, если необходимо

просмотреть полученные результаты) , -name и -type. Другими опциями пользуются, как

правило, опытные пользователи и администраторы.

$ find . –name fil.text –print

Приведенная выше команда реализует поиск имен файлов file.text, начиная с

текущего каталога и вывод результатов на стандартное устройство вывода.

Команда выводит сообщение об ошибке при попытке поиска файла в каталоге,

доступ к которому данному процессу ограничен соответствующими правами.

Для поиска строк информации файлов, соответствующих шаблону (набору

символов), используется команда grep:

77

grep [опции] шаблон имя_файла [имя_файла ...]

Шаблон, в общем виде, представляет собой регулярное выражение, которое может

содержать метасимволы (для более подробного знакомства см. команду ed встроенного

руководства). Однако шаблон может быть набором из алфавитно-цифровых символов.

$ grep dp40102 /etc/passwd

Приведенная выше команда выводит строки файла /etc/passwd, содержащие набор

символов dp401-02.

Для сравнения двух текстовых файла и определения различия между ними

используется команда diff:

diff [опции] имя_файла1 имя_файла2

Команда всегда предполагает, что необходим переход от имя_файла1 к

имя_файла2. Для различающихся строк файлов выводится информация. Строкам из

файла имя_файла1 предшествует символ <, а строкам из файла имя_файла2 – символ >.

Менее информативная команда cmp сравнивает данные двух файлов.

cmp [опции] имя_файла1 имя_файла2

При этом файлы могут быть как текстовыми, так и не текстовыми. Команда

сообщает о первом отличии между файлами, например:

$ cmp file1 file2

file1 file2 differ: char 5, line 1

$

Для нумерации строк текстового файла используется команда nl:

nl [опция] имя_файла [имя_файла ...]

Опциями файла можно задать шаг нумерации, начальное значение и т.д.

Для подсчета символов, слов и строк файла используется команда wc:

wc [опция] имя_файла

По умолчанию команда выводит имя файла и разделенные пробелами числа строк,

слов и символов.