![]() КАТЕГОРИИ: Архитектура-(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) |
ЧАСТЬ 1. Загрузить терминал UnixЗагрузить терминал Unix. Выполнить команды Unix: Просмотреть мое сетевое имя: $ who am i Просмотреть версию ОС UNIX: $ uname Просмотреть системные дату и время: $ date Просмотреть имя текущего каталога: $ pwd Ответ: /home/user1 Просмотреть содержимое текущего каталога без параметров: $ ls Просмотреть содержимое текущего каталога с выводом в одну колонку: $ ls -1 Просмотреть информацию о создателях файлов: $ ls -author Просмотреть полную информацию о файлах домашнего каталога: $ ls -l Просмотреть содержимое текущего каталога c учетом скрытых файлов: $ ls -A Просмотреть содержимое текущего каталога c сортировкой по размеру: $ ls -l -S Просмотреть содержимое текущего каталога c сортировкой по дате: $ ls -l -t Вызвать справку о команде ls (выход из справки q): $ man ls Просмотреть тип объекта Документы: $ file Документы Создать новый каталог sun: $ mkdir sun Создать еще один новый каталог moon. Открыть новый каталог sun: $ cd sun Просмотреть имя текущего каталога. Создать новый каталог star. Открыть каталог star. Просмотреть имя текущего каталога. Должно быть: /home/user1/sun/star Создать в каталоге star новый текстовый файл tt1.txt с помощью редактора ED: $ ed tt1.txt ? : a [команда добавления текста в файл] Фамилия имя Группа Предмет: “UNIX” Тема: “Команды обращения к файловой системе” Версия UNIX: Мое сетевое имя: Мой текущий каталог: Дата: Тип объекта “Документы”: . [точка набирается в пустой строке] w [команда записи файла] q [команда выхода из текстового редактора] $ Просмотреть содержимое текущего каталога. Просмотреть содержимое созданного текстового файла: $ cat tt1.txt Просмотреть тип созданного файла: $ file tt1.txt Перейти из каталога star в каталог sun: $ cd /home/user1/sun Просмотреть имя текущего каталога. Просмотреть из каталога sun содержимое каталога star, указав в команде просмотра путь к каталогу star. Скопировать файл из каталога star в каталог moon: $ cp <откуда> <куда> Открыть каталог moon. Просмотреть имя текущего каталога. Просмотреть содержимое каталога moon. Переименовать файл tt1.txt из каталога moon на файл text2 $ mv tt1.txt text2 Просмотреть содержимое переименованного текстового файла text2. Просмотреть тип данных файла text2. Создать копию файла text2 с именем text3. Определить размер файла text2. Дописать в файл text3 строку текста с указанием размера файла text2. Выйти в корневой каталог: $ cd / Просмотреть имя текущего каталога. Выйти из режима терминала: $ exit
МЕТОДИЧЕСКИЕ УКАЗАНИЯ Изучаемые команды: cat, cd, cp, cut, echo, find, grep, head, ln, ls, mkdir, mv, paste, pwd, sort, tail, tar, touch, uniq, wc Сценарий: Знакомство с каталогами UNIX В этом сценарии будет освещено знакомство с командами UNIX, изучение файловой системы и базовых каталогов, создание рабочей среды в домашнем каталоге пользователя для выполнения всех последующих команд. Начальные условия: Командная строка после входа в систему. 1. Получить имя текущего каталога с помощью команды pwd: 2. [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 <rgooch@atnf.csiro.au> 3-JUL-2000 /etc/inittab:# Author: Miquel van Smoorenburg, <miquels@cistron.nl> /etc/inittab:# Modified by: Patrick J. Volkerding, <volkerdi@ftp.cdrom.com> ... При работе с несколькими файлами 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 <rgooch@atnf.csiro.au> 3-JUL-2000 # Author: Miquel van Smoorenburg, <miquels@cistron.nl> # Modified by: Patrick J. Volkerding, <volkerdi@ftp.cdrom.com> ... Для вывода только найденной подстроки используется ключ -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 rgooch@atnf.csiro.au miquels@cistron.nl volkerdi@ftp.cdrom.com ... Получить все файлы каталога /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 для нахождения информации в файлах. Задания для самоподготовки 1. Создайте каталог test1 в домашнем каталоге. Сравните время создания системных каталогов /bin, /tmp с каталогом test1. 2. Скопируйте файл /bin/ls в локальный каталог. Посмотрите атрибуты этого файла. Попробуйте запустить его. 3. Создайте в локальном каталоге символическую ссылку tmplnk на каталог /tmp. Скопируйте несколько файлов в каталог tmplnk. 4. Сравните файлы /dev/tty1 и /dev/hda1. Какой тип они имеют? Чем они отличаются? 5. Найдите все файлы в системе, которые были модифицированы не более суток назад. 6. С помощью одной команды найдите все файлы с расширением.html в каталоге /usr и скопируйте их в локальный каталог htmls. 7. Создайте архив каталога /etc и узнайте его размер. Попробуйте создать сжатый архив того же каталога. Сравните степень сжатия gzip и bzip2 на этом примере. 8. Создайте текстовый файл a.txt из десяти строк. Узнайте его размер. Создайте новый файл, содержащий в себе файл a.txt четыре раза. 9. С помощью одной команды найдите все файлы с расширением.txt в каталоге /usr и объедините их в один большой файл big.txt. 10. Получите с помощью одной команды файл, содержащий все числовые идентификаторы пользователей, зарегистрированных в ситсеме. 11. Получите с помощью одной команды строки с 5-ой по 8-ю в файле /proc/cpuinfo, содержащем информацию о процессоре. 12. С помощью одной команды найдите все файлы с расширениями.txt или.html в каталоге /usr, в которых содержится слово user.
Дата добавления: 2014-10-23; Просмотров: 540; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |