Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Практическая работа №6 Работа с текстовыми файлами




Как отключать

После того как вы разобрались, что в вашей системе запускается и для чего, и выявили ненужные для себя процессы, их следует отключить — простое закрытие процесса в менеджере задач приведёт лишь к временной его дезактивации — при следующем старте ОС он снова окажется в памяти. Да и не очень это корректно — убивать процесс прямо в памяти. Например, после принудительного закрытия ctfmon.exe раскладка в Word не будет переключаться вплоть до перезагрузки ПК, несмотря на запущенный Punto.

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Определение процесса, потока.

2.Назвать системные и пользовательские процессы.

3. Информационные структуры процессов

4. Что такое службы и частью какого процесса они являются

5. Где службы можно посмотреть в системе

6. На основании материала лекций покажите, как работать со службами, взаимозависимость служб.

7. Перечислить системные и пользовательские процессы, количество потоков в них, описать их назначение. Для этого воспользоваться Интернетом или из раздела «Процессы в Windows»


 

Цель: научиться создавать, корректировать, просматривать текстовые файлы в UNIX и осуществлять в них поиск

1. Проделайте задания ч. 1

2. Напишите свою пр. работу по образу ч. 1, используя методические указания (по всем сценариям), используя свои названия файлов, каталогов и т. п.. Можно использовать раздел: ПРИМЕРНЫЕ СЦЕНАРИИ

3. Выполните задания для самоподготовки

4. Напишите отчет по проделанной работе

Часть1

 

1. Зайдите в режим терминала.

2. Просмотрите имя текущего каталога: pwd

3. Просмотрите содержимое текущего каталога: ls

4. С помощью текстового редактора nano создайте новый текстовый файл.

5. Введите текст о студентах своей группы:

Группа СП-

ДАННЫЕ О СТУДЕНТАХ:

N ФИО Год рождения Login

1. Иванов В 1990 w063333

2.

3.

4.

5.

6. Просмотрите содержимое текущего каталога: ls и содержимое файла: cat table_1

8. Вызовите файл в режим корректировки: nano table_1

9. Используя команды корректировки добавьте месяц рождения для каждого студента:

i – вкл режим вставки, х – удаляет текущий символ, например:

1. Иванов В 01.1990 w063333

10. Сохраните изменения с новым именем

12. Просмотрите содержимое текущего каталога: ls и содержимое файлов: table_1 и table_2.

13. Самостоятельно добавьте еще одну строку данных в файл table_2 с сохранением изменений.

14. Просмотрите все файлы текущего каталога, начинающиеся на букву t: ls t*

15. Просмотрите содержимое файла table_2.

16. Просмотрите содержимое первых четырех строк файла table_2: head -4 table_2

17. Просмотрите содержимое последних двух строк файла table_2: tail -2 table_2

18. Выведите из файла table_2 строки с 1990 годом рождения: grep 1990 table_2

19. Самостоятельно выведите из файла table_2 все строки, в которых встречается число 8.

20. Выведите из файла table_2 строки, содержащие цифры: grep [0-9] table_2

21. Просмотрите фамилии и их логины из файла table_2: awk '{print $2$5}' table2

22. Просмотрите количество строк, слов, символов, байт в файле table_2

одновременно: wc table_2

раздельно: wc -l table_2 [кол-во строк]

wc -w table_2 [кол-во слов]

wc -m table_2 [кол-во символов]

wc -с table_2 [кол-во байт]

23. Соедините вывод двух файлов table_1 и table_2 командой join: join table_1 table_2

24. Используя команды echo и tr выполните преобразование текстовой строки:

echo “a test” | tr t p

echo “a test” | tr aest 1234

echo “a test” | tr -d t

echo “a test” | tr '[:lower:]' '[:upper:]'

25. Самостоятельно преобразуйте вывод текстовой строки: “Октябрь” на “Декабрь”, используя оптимальный режим.

26. Вывод строки с текущей датой:

27. Присвоить переменной d значение команды: d=`date`

28. Вывести значение переменной в команде echo: echo “Сегодня” $d

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО КОМАНДАМ:

cat, cd, cp, cut, echo, find, grep, head, ln, ls, mkdir, mv, paste, pwd, sort, tail, tar, touch, uniq, wc

 

Сценарий: Знакомство с каталогами UNIX

 

Здесь будет освещено знакомство с командами UNIX, изучение файловой системы и базовых каталогов, создание рабочей среды в домашнем каталоге пользователя для выполнения всех последующих команд.

Начальные условия: Командная строка после входа в систему.

Получить имя текущего каталога с помощью команды pwd:

[user@localhost ~]$ pwd

/home/user/

Перейти в корневой каталог с помощью команды cd /:

[user@localhost ~]$ cd /

[user@localhost /]$ pwd

/

Отметить, как изменилась строка приглашения.

Посмотреть содержимое корневого каталога с помощью команды ls:

[user@localhost /]$ ls

bin dev home lib mnt proc sbin sys usr

boot etc image media opt root srv tmp var

Сравнить с использованием «расширенного» вывода команды ls -F:

[user@localhost /]$ ls -F

bin/ dev/ home/ lib/ mnt/ proc/ sbin/ sys/ usr/

boot/ etc/ image/ media/ opt/ root/ srv/ tmp/ var/

Каталоги отмечаются синим цветом и знаком «/» после имени.

Посмотреть содержимое домашнего каталога с помощью команды ls ~:

[user@localhost /]$ ls ~

Documents tmp

Домашний каталог содержит набор стандартных каталогов.

Вернуться в домашний каталог с помощью cd без параметров:

[user@localhost /]$ cd

[user@localhost ~]$

Создать каталог test с помощью команды mkdir test:

[user@localhost ~]$ mkdir test

Посмотреть обновлённое содержимое домашнего каталога ls:

[user@localhost ~]$ ls

Documents test tmp

Создать подкаталог subtest в каталоге test командой mkdir test/subtest:

[user@localhost ~]$ mkdir test/subtest

Посмотреть содержимое домашнего каталога и его подкаталогов с помощью ключа рекурсивного просмотра -R в команде ls -R:

[user@localhost ~]$ ls -R

.:

Documents test tmp

 

./Documents:

 

./test:

subtest

 

./test/subtest:

 

./tmp:

Сценарий: Изучение типов файлов в UNIX

В этом сценарии рассматриваются типы файлов в UNIX: простые файлы, каталоги, ссылки. Изучаются команды создания и копирования файлов. Показывается разница между жесткими и символическими ссылками, между копированием и переносом файла.

Начальные условия: Командная строка. Каталог test после предыдущего сценария.

Cоздать пустой файл с помощью команды touch first.txt:

[user@localhost test]$ touch first.txt

[user@localhost test]$ ls

first.txt subtest

Добавить строку текста в конец файла с помощью команды echo "Hello, world" >> first.txt и перенаправления вывода:

[user@localhost test]$ echo "Hello, world" >> first.txt

Посмотреть содержимое файла с помощью команды cat first.txt:

[user@localhost test]$ cat first.txt

Hello, world

[user@localhost test]$

Посмотреть расширенную информацию о каталоге, используя ключ -l команды ls. ls -l test:

[user@localhost test]$ ls -l

total 4

-rw-r--r-- 1 user user 13 Feb 14 20:12 first.txt

drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest

Добавить псевдоним командной оболочки, чтобы сократить размер команды, с помощью команды alias ls='ls -F -l':

[user@localhost test]$ alias ls='ls -F -l'

[user@localhost test]$ ls test

total 4

-rw-r--r-- 1 user user 13 Feb 14 20:12 first.txt

drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest

Посмотреть глубже на каталог test, используя ключи -a и -i. ls -a -i

[user@localhost test]$ ls -a -i

total 4

1014 drwxr-xr-x 3 user user 100 Feb 14 20:07./

941 drwx------ 8 user user 340 Feb 14 19:28../

1081 -rw-r--r-- 1 user user 13 Feb 14 20:12 first.txt

1015 drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest/

Первый столбец — номера индексных узлов файловой системы. Третий столбец — число жёстких ссылок файла.

Скопировать файл с помощью команды cp first.txt copy1.txt:

[user@localhost test]$ cp first.txt copy1.txt

[user@localhost test]$ ls -a -i

total 8

1014 drwxr-xr-x 3 user user 120 Feb 14 20:33./

941 drwx------ 8 user user 340 Feb 14 19:28../

1082 -rw-r--r-- 1 user user 13 Feb 14 20:33 copy1.txt

1081 -rw-r--r-- 1 user user 13 Feb 14 20:12 first.txt

1015 drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest/

Новый файл имеет свой собственный индексный узел.

Переименовать файл с помощью команды mv first.txt orig.txt. mv first.txt orig.txt:

[user@localhost test]$ mv first.txt orig.txt

[user@localhost test]$ ls -a -i

total 8

1014 drwxr-xr-x 3 user user 120 Feb 14 20:37./

941 drwx------ 8 user user 340 Feb 14 19:28../

1082 -rw-r--r-- 1 user user 13 Feb 14 20:33 copy1.txt

1081 -rw-r--r-- 1 user user 13 Feb 14 20:12 orig.txt

1015 drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest/

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

Создать жёсткую ссылку командой ln orig.txt copy2.txt:

[user@localhost test]$ ln orig.txt copy2.txt

[user@localhost test]$ ls -a -i

total 12

1014 drwxr-xr-x 3 user user 140 Feb 14 20:41./

941 drwx------ 8 user user 340 Feb 14 19:28../

1082 -rw-r--r-- 1 user user 13 Feb 14 20:33 copy1.txt

1081 -rw-r--r-- 2 user user 13 Feb 14 20:12 copy2.txt

1081 -rw-r--r-- 2 user user 13 Feb 14 20:12 orig.txt

1015 drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest/

Добавилась ещё одна ссылка на тот же файл, число ссылок увеличилось на 1.

Создать символическую ссылку командой ln -s orig.txt orig.lnk:

[user@localhost test]$ ln -s orig.txt orig.lnk

[user@localhost test]$ ls -a -i

total 12

1014 drwxr-xr-x 3 user user 160 Feb 14 20:45./

941 drwx------ 8 user user 340 Feb 14 19:28../

1082 -rw-r--r-- 1 user user 13 Feb 14 20:33 copy1.txt

1081 -rw-r--r-- 2 user user 13 Feb 14 20:12 copy2.txt

1083 lrwxrwxrwx 1 user user 8 Feb 14 20:45 orig.lnk -> orig.txt

1081 -rw-r--r-- 2 user user 13 Feb 14 20:12 orig.txt

1015 drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest/

Новый файл имеет новый индексный узел и размер, равный имени файла orig.txt.

Сравним содержимое файлов при обращении к ним по имени:

[user@localhost test]$ cat orig.txt

Hello, world.

[user@localhost test]$ cat copy2.txt

Hello, world.

[user@localhost test]$ cat orig.lnk

Hello, world.

К одним и тем же данным можно обратиться через жесткую или символическую ссылку.

Сценарий: Поиск системных журналов

В этом сценарии изучается команда поиска файлов и каталогов.

Начальные условия: Командная строка, каталог test после прошлого сценария.

Вывести список всех файлов и каталогов в текущей директории, включая содержимое подкаталогов с помощью команды find:

[user@localhost test]$ find

.

./orig.lnk

./copy2.txt

./orig.txt

./copy1.txt

./subtest

Найти все файлы и дериктории в текущем каталоге и ее подкаталогах, которые начиняются на «o» с помощью команды find -name "o*":

[user@localhost test]$ find -name "o*"

./orig.lnk

./orig.txt

Найти все файлы и каталоги в каталоге /etc и его подкаталогах, которые начиняются на «o» с помощью команды find /etc -name "o*":

[user@localhost test]$ find /etc -name "o*"

find: /etc/tcb: Permission denied

find: /etc/default: Permission denied

find: /etc/buildreqs: Permission denied

...

Список найденных файлов может быть слишком большим и для его просмотра можно воспользоваться «прокруткой» терминала с помощью клавиш Shift - PgUp и Shift - PgDn.

Вы увидели множество сообщений об ошибках доступа («Permission denied»), которые можно подавить с помощью перенаправления ошибок следующим образом: find /etc -name "o*" 2>/dev/null

[user@localhost test]$ find /etc -name "o*" 2>/dev/null

/etc/modprobe.d/options

/etc/modutils.d/oss

/etc/net/ifaces/default/fw/options

/etc/net/ifaces/default/options

...

/etc/pam.d/other

/etc/rc.d/init.d/outformat

Найти все каталоги в /etc, которые начинаются на «o» с помощью команды find /etc -name "o*" -a -type d 2>/dev/null:

[user@localhost test]$ find /etc -name "o*" -a -type d 2>/dev/null

/etc/net/options.d

/etc/openssh

/etc/openssl

/etc/opt

Найти все обычные файлы в каталоге /var и его подкаталогах, заканчивающиеся на «log»:

[user@localhost test]$ find /var -name "*log" -a -type f 2>/dev/null

/var/log/Xorg.0.log

/var/log/faillog

/var/log/lastlog

Создать каталог logs с помощью команды mkdir logs:

[user@localhost test]$ mkdir logs

Скопировать найденные файлы в локальный каталог с помощью параметра -exec команды find. Для этого выполнить: find /var -name "*log" -a -type f -exec cp {} test/logs/ 2>/dev/null:

[user@localhost test]$ find /var -name "*log" -a -type f -exec cp {} test/logs/ 2>/dev/null

[user@localhost test]$ ls test/logs

итого 789

-rw-r----- 1 user users 601033 Окт 16 18:37 emerge.log

-rw-r--r-- 1 user users 292292 Окт 16 18:37 lastlog

-rw-r--r-- 1 user users 37383 Окт 16 18:37 Xorg.0.log

Были скопированы все файлы, права на чтение которых у нас есть.

Сценарий: Архивирование и деархивирование файлов и каталогов

В этом сценарии изучается команда архивирования файлов и каталогов. Командная строка, каталог test после прошлого сценария.

Начальные условия:

Перейти в домашний каталог с помощью команды cd:

[user@localhost test]$ cd

[user@localhost ~]$

Создать архив с именем test.tar.gz с применением сжатия, содержащий каталог test с помощью команды tar -czf test.tar.gz test:

[user@localhost ~]$ tar -czf test.tar.gz test

[user@localhost ~]$ ls

drwxr-xr-x 4 user users 208 Окт 16 18:36 test/

-rw-r--r-- 1 user users 79173 Окт 16 18:49 test.tar.gz

Создать новый каталог для содержимого архива командой mkdir test2:

user@desktop ~ $ mkdir test2

Перейти в новый каталог с помощью команды cd test2:

user@desktop ~ $ cd test2

Развернуть содержимое архива в текущий каталог с помощью команды tar -xzf../test.tar.gz:

user@desktop test2 $ tar -xzf../test.tar.gz

Убедиться, что содержимое распакованного архива совпадает с оригинальныйм каталогом. Ввести команду ls -l -F:

user@desktop test2 $ ls -l -F

итого 0

drwxr-xr-x 4 user users 208 Окт 16 18:36 test/

user@desktop test2 $ ls -l -F test

итого 12

-rw-r--r-- 1 user users 13 Окт 15 20:54 copy1.txt

-rw-r--r-- 2 user users 13 Окт 15 20:48 copy2.txt

drwxr-xr-x 2 user users 136 Окт 16 18:37 logs/

lrwxrwxrwx 1 user users 8 Окт 16 18:54 orig.lnk -> orig.txt

-rw-r--r-- 2 user users 13 Окт 15 20:48 orig.txt

drwxr-xr-x 2 user users 48 Окт 13 21:33 subtest/

Сценарий: Cоздание новых текстовых файлов

В этом сценарии изучаются команды для создания и модифицирования текстовых файлов. Командная строка.

Начальные условия:

Ввести команду echo "One line":

user@desktop test $ echo "One line"

One line

Данная команда принимает строку в виде аргумента и выводит её на стандартный вывод.

Ввести ту же команду, но перенаправить вывод в файл second.txt с помощью «>». Ввести команду echo "One line" > second.txt:

user@desktop test $ echo "One line" > second.txt

Добавить в конец файла second.txt строку «A line» с помощью другого перенаправления echo "A line" >> second.txt:

user@desktop test $ echo "A line" >> second.txt

Вывести содержимое файла с помощью команды cat second.txt:

user@desktop test $ cat second.txt

One line

A line

С помощью команды cat можно создавать многострочные файлы —, если переопределить вывод программы в файл и вводить текст до нажатия Ctrl - D (конец ввода). Ввести команду cat >multiline.txt и набрать текст

user@desktop test $ cat >multiline.txt

Simple text:

blah-blah-blah

1 2 3 4 5 6 7 8 9 0

 

bye!

 

(Ctrl+D)

user@desktop test $

Убедиться, что содержимое файла совпадает с введённым текстом, включая все переводы строки. Для этого ввести команду cat multiline.txt

user@desktop test $ cat multiline.txt

Simple text:

blah-blah-blah

1 2 3 4 5 6 7 8 9 0

 

bye!

 

Основным назначением команды cat является объединение файлов, имена которых передаются как аргументы командной строки. Объединить файлы с помощью команды cat orig.txt second.txt multiline.txt > big.txt:

user@desktop test $ cat orig.txt second.txt multiline.txt > big.txt

Убедиться, что новый файл содержит строки из перечисленных файлов с помощью команды cat big.txt:

user@desktop test $ cat big.txt

Hello, world

One line

A line

Simple text:

blah-blah-blah

1 2 3 4 5 6 7 8 9 0

 

bye!

 

Сценарий: Разрезание и склеивание файлов

В данном сценарии изучается, как выделять информацию, разбитую на части с помощью специального символа-разделителя (например, прообела или символа:), из файлов и создавать новые структурированные файлы.

Начальные условия: Командная строка.

Посмотреть содержимое файла /etc/passwd, в котором содержится информация о пользователях системы, с помощью команды cat /etc/passwd:

user@desktop test $ cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/false

daemon:x:2:2:daemon:/sbin:/bin/false

adm:x:3:4:adm:/var/adm:/bin/false

lp:x:4:7:lp:/var/spool/lpd:/bin/false

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

...

Каждая строка хранит запись об отдельном пользователе. Запись состоит из полей, разделённых символом «:».

Выделить первый столбец в каждой записи, установив разделитель в «:», с потощью команды cat /etc/passwd | cut -f1 -d::

user@desktop test $ cat /etc/passwd | cut -f1 -d:

root

bin

daemon

adm

lp

sync

shutdown

...

Отсортировать список пользователей по алфавиту с помощью команды cat /etc/passwd | cut -f1 -d: | sort:

user@desktop test $ cat /etc/passwd | cut -f1 -d: | sort

adm

alias

apache

at

bin

cron

cyrus

...

Выделить седьмой столбец в каждой записи, соответствующий командной оболочке пользователя, с помощью команды cat /etc/passwd | cut -f7 -d:

user@desktop test $ cat /etc/passwd | cut -f7 -d:

/bin/bash

/bin/false

/bin/false

/bin/false

/bin/false

/bin/sync

...

Список содержит много повторяющихся строк.

Удалить повторяющиеся строки командой cat /etc/passwd | cut -f7 -d: | uniq:

user@desktop test $ cat /etc/passwd | cut -f7 -d: | uniq

/bin/bash

/bin/false

/bin/sync

/sbin/shutdown

/sbin/halt

/bin/false

...

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

Добиться полной уникальности, предварительно отсортировав строки с помощью команды sort. Ввести команду cat /etc/passwd | cut -f7 -d: | sort | uniq:

user@desktop test $ cat /etc/passwd | cut -f7 -d: | sort | uniq

/bin/bash

/bin/false

/bin/sync

/dev/null

/sbin/halt

/sbin/shutdown

Выделить первый и седьмой столбец файла /etc/passwd в отдельные файлы. Для этого ввести команды cat /etc/passwd | cut -f1 -d: > users и cat /etc/passwd | cut -f7 -d: > shells:

user@desktop test $ cat /etc/passwd | cut -f1 -d: > users

user@desktop test $ cat /etc/passwd | cut -f7 -d: > shells

Объединить результаты с помощью команды paste users shells:

user@desktop test $ paste users shells

root /bin/bash

bin /bin/false

daemon /bin/false

adm /bin/false

lp /bin/false

sync /bin/sync

...

Сценарий: Быстрый анализ текстов

В данном сценарии изучаются команды, которые позволяют провести первичный анализ файла: с чего он начинается, как заканчивается и каков его размер.

Начальные условия: Командная строка.

Получить число строк в файле /etc/passwd с помощью команды wc -l /etc/passwd:

user@desktop test $ wc -l /etc/passwd

44 /etc/passwd

Или другим способом: посчитав число слов в созданном ранее файле users с помощью команды cat users | wc -w:

user@desktop test $ cat users | wc -w

Посмотеть первые несколько строк длинного файла с помощью команды head logs/Xorg.0.log:

user@desktop test $ head logs/Xorg.0.log

X Window System Version 6.8.2

Release Date: 9 February 2005

X Protocol Version 11, Revision 0, Release 6.8.2

Build Operating System: Linux 2.6.13-gentoo i686 [ELF]

Current Operating System: Linux thinkpad 2.6.13-gentoo #1 Wed Sep 7 01:03:14 MSD 2005 i686

Build Date: 08 October 2005

Before reporting problems, check http://wiki.X.Org

to make sure that you have the latest version.

Module Loader present

Аналогично, посмотеть последние несколько строк с помощью команды tail logs/Xorg.0.log:

user@desktop test $ tail logs/Xorg.0.log

(II) RADEON(0): [RESUME] Attempting to re-init Radeon hardware.

(II) RADEON(0): [agp] Mode 0x1f000201 [AGP 0x8086/0x3340; Card 0x1002/0x4c66]

(II) Mouse1: ps2EnableDataReporting: succeeded

SetClientVersion: 0 8

SetGrabKeysState - disabled

SetGrabKeysState - enabled

(II) 3rd Button detected: disabling emulate3Button

SetClientVersion: 0 8

SetGrabKeysState - disabled

SetGrabKeysState - enabled

Это бывает полезно при просмотре системных журналов — в них самые последние события содержатся в конце файлов.

Сценарий: Поиск строк по регулярным выражениям

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

Начальные условия: Командная строка. Каталог test/log с найденными системными журналами.

Среди найденных системных журналов посмотреть файл журнала загрузки графичской системы XFree86.0.log с помощью команды less test/log/XFree86.0.log:

user@desktop ~ $ less test/log/XFree86.0.log

Выйти из просмоторщика можно нажатием клавиши q.

Найти все предупреждения в журнале: строка, начинающаяся с «(WW)». Для этого ввести команду grep "^(WW)" test/log/XFree86.0.log:

user@desktop ~ $ grep "^(WW)" test/log/XFree86.0.log

(WW) The directory "/usr/share/fonts/freefonts/" does not exist.

(WW) The directory "/usr/share/fonts/unifont/" does not exist.

(WW) The directory "/usr/share/fonts/artwiz/" does not exist.

...

Получить все строки, содержащие следующий шаблон: последовательность из 1 или более цифры или буквы, затем символ собаки, затем еще одна последовательность 1 или более цифры или буквы или точки, затем символ точки, затем от двух до четырёх букв (имя домена первого уровня). Также служебный вывод ошибок удаляется (перенаправляется в нулевое устройство). Для этого ввести команду grep "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null:

user@desktop ~ $ grep "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null

/etc/devfsd.conf:# Richard Gooch <[email protected]> 3-JUL-2000

/etc/inittab:# Author: Miquel van Smoorenburg, <[email protected]>

/etc/inittab:# Modified by: Patrick J. Volkerding, <[email protected]>

...

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

Избавиться от имени файла в начале строки с помощью ключа -h. Ввести команду grep -h "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null:

user@desktop ~ $ grep -h "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null

# Richard Gooch <[email protected]> 3-JUL-2000

# Author: Miquel van Smoorenburg, <[email protected]>

# Modified by: Patrick J. Volkerding, <[email protected]>

...

Для вывода только найденной подстроки используется ключ -o. Ввести команду grep -ho "[a-zA-Z0-9]\+@[a-zA-Z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null:

user@desktop ~ $ grep -ho "[a-zA-Z0-9]\+@[a-zA-Z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null

[email protected]

[email protected]

[email protected]

...

Получить все файлы каталога /etc/ с помощью команды find /etc -type f 2>/dev/null, игнорируя ошибки:

user@desktop ~ $ find /etc -type f 2>/dev/null

/etc/X11/xorg.conf.example

/etc/X11/Sessions/kde-3.4

/etc/X11/Sessions/Xsession

/etc/X11/chooser.sh

...

Для каждого из найденных файлов произвести поиск подстроки «nameserver». Для этого ввести команду find /etc -type f -exec grep "nameserver" {} \; 2>/dev/null:

user@desktop ~ $ find /etc -type f -exec grep "nameserver" {} \; 2>/dev/null

# merge the new nameservers with the other options from the old...

grep --invert-match '^nameserver[[:space:]]' $REALRESOLVCONF

nameserver 10.22.10.20

...

Для большего удобства добавить вывод имени файла (ключ -H) и номера строки (ключ -n), на которой было найдено совпадение, с помощью команды find /etc -type f -exec grep -Hn "nameserver" {} \; 2>/dev/null:

user@desktop ~ $ find /etc -type f -exec grep -Hn "nameserver" {} \; 2>/dev/null

/etc/ppp/ip-up:24: # merge the new nameservers with the other optio...

/etc/ppp/ip-up:26: grep --invert-match '^nameserver[[:space...

/etc/ppp/resolv.conf:1:nameserver 10.22.10.20

...

Таким образом, команда grep может эффективно использоваться вместе с командой find для нахождения информации в файлах.

Задания для самоподготовки

Создайте каталог test1 в домашнем каталоге. Сравните время создания системных каталогов /bin, /tmp с каталогом test1.

Скопируйте файл /bin/ls в локальный каталог. Посмотрите атрибуты этого файла. Попробуйте запустить его.

Создайте в локальном каталоге символическую ссылку tmplnk на каталог /tmp. Скопируйте несколько файлов в каталог tmplnk.

Сравните файлы /dev/tty1 и /dev/hda1. Какой тип они имеют? Чем они отличаются?

Найдите все файлы в системе, которые были модифицированы не более суток назад.

С помощью одной команды найдите все файлы с расширением.html в каталоге /usr и скопируйте их в локальный каталог htmls.

Создайте архив каталога /etc и узнайте его размер. Попробуйте создать сжатый архив того же каталога. Сравните степень сжатия gzip и bzip2 на этом примере.

Создайте текстовый файл a.txt из десяти строк. Узнайте его размер. Создайте новый файл, содержащий в себе файл a.txt четыре раза.

С помощью одной команды найдите все файлы с расширением.txt в каталоге /usr и объедините их в один большой файл big.txt.

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

Получите с помощью одной команды строки с 5-ой по 8-ю в файле /proc/cpuinfo, содержащем информацию о процессоре.

Придумайте регулярное выражение, соответствующее URL с использованием протокола http. Найдите все строки, содержащие такие URL в файлах каталога /etc.

С помощью одной команды найдите все файлы с расширениями.txt или.html в каталоге /usr, в которых содержится слово user.

 




Поделиться с друзьями:


Дата добавления: 2014-10-23; Просмотров: 2442; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.25 сек.