Лабораторная работа №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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|