Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Лабораторная работа №6. Работа с файлами в Unix




Целью лабораторной работы является знакомство с командной строкой Unix, командами по работе с файловой системой и командами обработки текстовых файлов.

Практикум:

Знакомство с каталогами Unix

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

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

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

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

Директории отмечаются синим цветом и знаком «/» после имени;

5. Посмотреть содержимое домашнего каталога с помощью команды ls -F --color ~.

Возможно, домашний каталог пуст;

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

7. Создать директорию test с помощью команды mkdir test;

8. Посмотреть обновлённое содержимое домашнего каталога ls -F –color;

9. Создать поддиректорию subtest в директории test командой mkdir test/subtest;

10. Посмотреть содержимое домашнего каталога и его подкаталогов с помощью ключа рекурсивного просмотра –R в команде ls -F --color –R;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

22. Сравним содержимое файлов при обращении к ним по имени cat orig.txt; cat copy2.txt; cat orig.lnk.

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

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

23. Перейти в каталог test с помощью команды cd test;

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

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

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

27. Найти все обычные файлы в директории /etc и ее поддиректориях, которые начинаются на «o» с помощью команды find /etc -name "o*" -a -type f;

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

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

29. Исключить вывод сообщений об ошибках (например, «Permission denied») с помощью перенаправления вывода ошибок в специальное устройство /dev/null. Для этого ввести команду find /var -name "*log" -a -type f 2>/dev/null;

30. Создать директорию logs с помощью команды mkdir test/logs;

31. Скопировать найденные файлы в локальную директорию с помощью параметра –exec команды find. Для этого ввести команду find /var -name "*log" -a -type f -exec cp ‘{}’ test/logs ‘;’;

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

Архивирование и деархивирование файлов и директорий

32. Перейти в домашнюю директорию с помощью команды cd;

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

34. Создать новую директорию для содержимого архива командой mkdir test2;

35. Перейти в новую директорию с помощью команды cd test2;

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

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

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

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

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

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

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

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

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

Simple text:blah-blah-blah1 2 3 4 5 6 7 8 9 0 bye! (Ctrl+D)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

58. Среди найденных системных журналов посмотреть файл Xorg.0.log с помощью команды less test/logs/Xorg.0.log.

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

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

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

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

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

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

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

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

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

Таким образом, команда 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. Придумайте регулярное выражение, соответствующее URL с использованием протокола http. Найдите все строки, содержащие такие URL в файлах директории /etc;

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...