Информационные системы ускорителей

ЛАБОРАТОРНЫЙ ПРАКТИКУМ:
"КОМАНДНАЯ ОБОЛОЧКА UNIX"

СТРУКТУРА ПРАКТИКУМА

ЗАДАНИЯ ПРАКТИКУМА

ЗАДАНИЕ №1

ЗАДАНИЕ №2

ЗАДАНИЕ №3

ЗАДАНИЕ №4

ЗАДАНИЕ №5

ВВЕДЕНИЕ

НЕОБХОДИМАЯ ИНФОРМАЦИЯ

Host Name рабочего сервера

Приглашение командной строки

Редактирование командной строки

Стандартные обозначения

Используемые команды

1. СЕАНС РАБОТЫ В UNIX-СИСТЕМЕ

1. Терминал и командная строка

2. Логины, пароли и доступ к серверу

3. Вход в систему/завершение работы

2.ФАЙЛОВАЯ СИСТЕМА UNIX

1. Файлы и каталоги. Абсолютный (полный) путь

2. Домашний и текущий каталог. Относительный путь

3. Просмотр структуры каталогов и файлов

4. Создание и удаление каталогов и файлов

5. Пример построения дерева каталогов

6. Копирование и перемещение файлов

3.ЧТО ДОЛЖЕН ЗНАТЬ НЕ ТОЛЬКО СИСАДМИН

1. Учетные записи и пользователи

2. Задачи и процессы в системе

3. Права доступа к файлам и каталогам

4. Ввод/вывод и конвейеры

5. Поиск и обработка текстовых данных

4.ФАЙЛОВЫЙ МЕНЕДЖЕР MIDNIGHT COMMANDER

1. Внешний вид, начало и завершение работы

2. Работа с каталогами и файлами

3.5. Поиск и обработка текстовых данных


Работая в UNIX, иногда бывает необходимость найти группу файлов или папок, удовлетворяющих определенным критериям и выполнить с ними некоторые действия. Для этих целей в UNIX есть несколько команд и утилит, в рамках выполняемого практикума предлагается рассмотреть только одну из них – команду, а точнее, утилиту grep.


Утилита grep – поиск текстовых файлов по фрагментам текста


Утилита grep выполняет поиск в текстовых файлах образца текста, и в зависимости от способа применения выдает информацию о файле, содержащем этот образец. Например, можно узнать, есть ли в директории /usr/share/liblab/proverbs/spirit/mind файлы, содержащие текстовые фрагменты «show» и «shall». Выясняется, что есть файл /usr/share/liblab/proverbs/spirit/mind/philosph, содержащий текстовый образец «shall», а файлов содержащих «show», в этой директории не существует (Пример 3.19). Команда grep выдает на экран полное имя файла и строки из него, в которых найдет искомый образец текста.


unix-workdir

Пример 3.19. Поиск файла, содержащего образец текста

v100-1@beta:~> grep shall /usr/share/liblab/proverbs/spirit/mind/*
/usr/share/liblab/proverbs/spirit/mind/philosph:   As you sow, you shall mow.
v100-1@beta:~> grep show /usr/share/liblab/proverbs/spirit/mind/*
v100-1@beta:~>
			

Для дальнейших манипуляций над найденным файлом потребуется форма команды grep, которая будет выдавать в качестве результата строку, содержащую только имя файла, в виде полного пути. Это команда grep –l (Пример 3.20).


unix-workdir

Пример 3.20. Печать имени файла, содержащего образец текста

v100-1@beta:~> grep –l shall /usr/share/liblab/proverbs/spirit/mind/*
/usr/share/liblab/proverbs/spirit/mind/philosph
v100-1@beta:~> grep show /usr/share/liblab/proverbs/spirit/mind/*
v100-1@beta:~>
			

Очевидным способом просмотра текста найденного файла является: cat /usr/share/liblab/proverbs/spirit/mind/philosph, однако, чтобы не набирать по многу раз команды с длинными путями, можно использовать результат работы grep –l в качестве параметра cat. (Пример 3.21) При этом вся команда grep –l заключается в обратные апострофы (другой регистр клавиши с волной «~»).


unix-workdir

Пример 3.21. Просмотр файла, содержащего образец текста

v100-1@beta:~> cat `grep -l shall /usr/share/liblab/proverbs/spirit/mind/*`
   No fool as old fool.
   Нет дурака хуже старого (дурака).

   Nothing must be done hastily but killing of fleas.
   Ничего не следует делать наспех, кроме избиения блох.
   ср. Спешка нужна только при ловле блох.

   Where there's a will, there's a way.
   Где есть желание, есть и средство.

   Every dark cloud must have its silver lining.
   У каждого темного облака должна быть своя серебристая подкладка.
   ср. Нет худа без добра.
   As you sow, you shall mow.
   Как посеешь, так и скосишь.
   По-русски, что посеешь, то и пожнешь.
v100-1@beta:~>
			

По сути, результатом grep –l является выдаваемая в stdout текстовая строка, которая может быть преобразована, например, потоковым текстовым редактором sed (англ. Stream EDitor). Например, можно выполнить замену текста, используя внутреннюю команду «s/что_заменять/на_что_заменять/». Пример 3.22 показывает, как используя конвейер изменить текстовую строку из stdout, добавив в конец строки (обозначается $) группу символов « . « (пробел, точка, пробел).


unix-workdir

Пример 3.22. Добавление символов к строке, полученной из stdout

v100-1@beta:~> grep -l shall /usr/share/liblab/proverbs/spirit/mind/* | sed s/$/" . "/
/usr/share/liblab/proverbs/spirit/mind/philosph .
v100-1@beta:~>
			

Полученная таким образом (Пример 3.22) текстовая строка может быть использована в качестве аргумента (обрамленного обратными апострофами) для команды копирования cp (Пример 3.23). Для копирования файла нужно предварительно создать в домашней директории каталог myproverbs и сделать его текущим.


unix-workdir

Пример 3.23. Копирование файла, найденного по образцу текста

v100-1@beta:~> mkdir myproverbs
v100-1@beta:~> cd myproverbs
v100-1@beta:~/myproverbs> cp `grep -l shall /usr/share/liblab/proverbs/spirit/mind/* | sed s/$/" . "/`
v100-1@beta:~/myproverbs>  ls
philosph
v100-1@beta:~/myproverbs>  ls
			

Применение команды grep –l shall к текущей директории выдаст в качестве результата текстовую строку philosph. Эту строку можно передать в качестве параметра команде chmod, устанавливающей права доступа к файлам (Пример 3.24). Изменение прав доступа (перед и после) контролируется командой ls –l.


Пример 3.24. Изменение прав доступа к файлу, найденному по образцу текста

v100-1@beta:~/ myproverbs> ls –l
-rw-r--r-- 1 v100-1 v100 792 Ноя  3 11:45 philosph
v100-1@beta:~/myproverbs> chmod u-w  `grep -l shall *`
-r--r--r-- 1 v100-1 v100 792 Ноя  3 11:45 philosph
v100-1@beta:~/myproverbs>