# Linux. Практическая работа №1 ## Практическая работа №1.1 ### Цель работы: Научиться работать в командной строке на уровне опытного пользователя. **Чтобы не делать много скринов, буду помещать выполнение 3-4 заданий в один скрин.** 1. Посмотреть под каким пользователем в системе Linux. 2. Перейти в корневой каталог. 3. Посмотреть содержимое каталога. ![](https://i.imgur.com/dgppvBx.jpg) 4. Определить типы команд ls, cd. 5. Посмотреть из корневого каталога содержимое директории Home. 6. Перейти в директорию /tmp. 7. Создать директорию /pt. 8. Создать 3 текстовых документа 1.txt 2.txt 3.txt. В 4-м задании тип команды ls - псевдоним, а cd - это внутренняя команда. ![](https://i.imgur.com/YobFSuH.jpg) 9. Изменить или добавить содержимое текстового документа с помощью редакторов nano и vim. ![](https://i.imgur.com/avYl1u0.jpg) ![](https://i.imgur.com/N8ZfqLz.jpg) ![](https://i.imgur.com/wxc7xg0.jpg) 10. Скопировать и переименовать директорию с файлами. 11. Заархивировать директорию. 12. Разархивировать директорию. ![](https://i.imgur.com/TbN6dAp.jpg) 13. Посмотреть содержимое домашней директории и каталога usr одной командой. 14. Посмотреть содержимое каталога в обратном порядке. 15. Посмотреть права на директорию. 16. Посмотреть права на текстовые файлы. ![](https://i.imgur.com/c0oLpj9.jpg) 17. Переместить и переименовать один текстовый файл в директорию /tmp. 18. Создать новую директорию, в ней создать новый текстовый документ, переместить из директории /tmp файл в новую директорию с заменой файла и запросом на его изменение. ![](https://i.imgur.com/irFDNWD.jpg) 19. Определить местоположение данного исполняемого файла ls, cd. 20. Вывести краткое описание команды и утилиты ls, nano, rm. Для команды `cd` путь не вывелся, поскольку это внутренняя команда bash. ![](https://i.imgur.com/z28pknc.jpg) 21. Создать символические ссылки. 22. Создать символическую ссылку в никуда, продемонстрировать её. Мягкая ссылка ведущая в никуда - ссылка, целевой файл которой отсутствует. ![](https://i.imgur.com/nfMkzW6.jpg) 23. Создать прямые ссылки. Прямая ссылка - это по-сути обычный файл. Мы удаляем целевой файл, но содержимое ссылки не меняется. ![](https://i.imgur.com/yYqpKzz.jpg) 24. Создать собственную команду, которая будет использовать следующее: cd /usr; ls; cd - , с помощью alias. 25. С помощью команды cat написать любой текст и записать его в текстовый файл. ![](https://i.imgur.com/rsbVgJQ.jpg) 26. Удалить один текстовый файл 27. Создать пустую директорию и удалить её 28. Удалить директорию с 3-я текстовыми файлами ![](https://i.imgur.com/AQMx36b.jpg) 29. Создать пользователя 30. Поменять пароль нового пользователя ![](https://i.imgur.com/QVxVZNH.jpg) 31. Найти текстовый документ с помощью команд Find и Grep ![](https://i.imgur.com/w75Dp9L.jpg) 32. Воспользоваться логическими 'и' и 'или' как пример использовать команду ping 32.1 выполняются обе команды 32.2 вторая часть записана с ошибкой. Она не выполнилась. 32.3 и 32.4 выполняется только первая команда ![](https://i.imgur.com/qHDpOtD.jpg) ## Практическая работа №1.2 ### Цель: Научиться базовым функциям команды GREP. 1. Вы проводите поиск в Интернете, и видите, что используются две разные версии Python, и вы не знаете, какая из них был установлен в вашей системе установщиком Ubuntu или Debian, и устанавливал ли он какие-либо дополнительные модули? Для поиска выведем список всех установленных `deb` пакетов `dpkg -l` , а затем отфильтруем этот список в grep: `| grep -i python` ![](https://i.imgur.com/DKra3LG.jpg) 2. Допустим, у вас возникли проблемы с вашим веб-сервером Apache, и вы обратились к одному из многих форумов в сети с просьбой о помощи. Добрая душа, которая вам ответила, попросила вас отправить содержимое вашего файла `/etc/apache2/sites-available/default-ssl`. Разве вам не было бы легче, если бы вы могли просто удалить все закомментированные строки? используем инвертированный вывод `grep -v "#" /etc/apache2/sites-available/default-ssl.conf` **с указанием типа файла .conf. Иначе не грепает** ![](https://i.imgur.com/RP3QPki.jpg) 3. Например, предположим, что у вас есть целая папка, полная музыкальных файлов разных форматов. Вы хотите найти все файлы `.mp3` у исполнителя ABC, но вы не хотите никаких ремиксов. Как поступить? Выполнение команды `find . -name "*.mp3" | grep -i queen | grep -vi "remix"` выглядит более наглядно, если разбить эти действия по шагам ![](https://i.imgur.com/8baOeeH.jpg) 4. Как отобразить количество строк до или после строки поиска? В нашем примере, при исполнении команды `ifconfig | grep -B 2 eth0 ` перед шаблоном запроса нет строк. Поэтому вывелась только строка поиска ![](https://i.imgur.com/K6WXjkn.jpg) 5. Как вывести количество строк совпадения? Не сразу понял суть команды. Немного изменил запрос и разбил исполнение по шагам. ![](https://i.imgur.com/2SvR6Pf.jpg) 6. Как выяснить количество совпадений? ![](https://i.imgur.com/rLxdWPr.jpg) 7. Как найти файлы по заданным номерам строк? ![](https://i.imgur.com/INFjJ15.jpg) 8. Произвести поиск рекурсивной строки во всех каталогах. ![](https://i.imgur.com/AUALwnW.jpg) 9. Произвести поиск строк в архивах файлах Gzip. (создать zip архив см.п.1.10) Создадим архив и попробуем выполнить поиск по нему командой `zgrep`. Как видно на скрине, при выполнении команды `grep` поиск в архиве не происходит. ![](https://i.imgur.com/MwXcwkw.jpg) --- ## Практическая работа №1.3 ### Цель работы: Научиться работать в VIM. **3.1 Создание файла** Создадим новый файл `newfile` и откроем его в vim ![](https://i.imgur.com/e7kLZPw.jpg) ![](https://i.imgur.com/ttV8exa.jpg) Режимы визуального выделения: v- посимвольный ![](https://i.imgur.com/hQRGJD1.jpg) V- построчное выделение ![](https://i.imgur.com/Gz9TBdy.jpg) Ctrl+v - блочное выделение ![](https://i.imgur.com/4DIshaz.jpg) **3.2 Перемещение** Не знаю как на скрине показать что я переместился например, на 3 слова используя клавишу w, а не просто двигая курсор стрелками. но могу написать, что на три слова сразу сместиться можно набрав на клавиатуре 3w. **3.3 Поиск текста** Простой поиск: ![](https://i.imgur.com/CbvLO4E.jpg) Регистронезависимый поиск: ![](https://i.imgur.com/yCxRkHM.jpg) Регистро зависимый поиск: ![](https://i.imgur.com/m8v5Z78.jpg) **3.4 Редактирование** 3.4.1 Удаление текста В каждой строке файла я использовал по одной команде: x — удалить символ на позиции курсора (солово "новы" без последней буквы) d — удалить в заданном командой перемещения направлении. dl (удалил букву в слове "вторая") dd — удалить строку. Фразы "А это третья" в файле нет. D — удалить все символы от положения курсора до окончания строки. Конец фразы "Мы будем работать с этим файлом" обрезан. ![](https://i.imgur.com/fduNChq.jpg) r — заменить символ на позиции курсора (новые) c — заменить в заданном командой перемещения направлении (заменил слово "вторая" на "пятая") C — заменить до окончания строки (заменил "ья строчка" на "ий абзац") ![](https://i.imgur.com/tjdKobW.jpg) 3.4.2 Копирование и вставка 1 — установил курсор на слово файл, yb - скопировал предыдущее слово, перешел в конец строки, р - вставил слово. 2 - yy — скопировал всю строку 3 - p — вставил скопированную строку ниже текущей. 4 - yy — скопировал всю строку, P — вставил скопированную строку выше текущей. ![](https://i.imgur.com/3W9aXTR.jpg) 3.4.3 Дополнительные команды редактирования Посмотрел, как выглядит "J — присоединить строку ниже к текущей". Это как убрать перенос строки. Отмену действий, наверное сложно показать на одном скрине. ![](https://i.imgur.com/3zet76i.jpg) 3.5.1 Команды управления Не буду портить файл, выйду без сохранения - :!q ![](https://i.imgur.com/Tl6tjQe.jpg) **4. Заключение** Скрин об успешном прохождении интерактива с [](https://www.openvim.com/) прилагаю ![](https://i.imgur.com/KCUh1S9.jpg)