# Linux. Практическая работа №1
## Практическая работа №1.1
### Цель работы:
Научиться работать в командной строке на уровне опытного пользователя.
**Чтобы не делать много скринов, буду помещать выполнение 3-4 заданий в один скрин.**
1. Посмотреть под каким пользователем в системе Linux.
2. Перейти в корневой каталог.
3. Посмотреть содержимое каталога.

4. Определить типы команд ls, cd.
5. Посмотреть из корневого каталога содержимое директории Home.
6. Перейти в директорию /tmp.
7. Создать директорию /pt.
8. Создать 3 текстовых документа 1.txt 2.txt 3.txt.
В 4-м задании тип команды ls - псевдоним, а cd - это внутренняя команда.

9. Изменить или добавить содержимое текстового документа с помощью редакторов nano и vim.



10. Скопировать и переименовать директорию с файлами.
11. Заархивировать директорию.
12. Разархивировать директорию.

13. Посмотреть содержимое домашней директории и каталога usr одной командой.
14. Посмотреть содержимое каталога в обратном порядке.
15. Посмотреть права на директорию.
16. Посмотреть права на текстовые файлы.

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

19. Определить местоположение данного исполняемого файла ls, cd.
20. Вывести краткое описание команды и утилиты ls, nano, rm.
Для команды `cd` путь не вывелся, поскольку это внутренняя команда bash.

21. Создать символические ссылки.
22. Создать символическую ссылку в никуда, продемонстрировать её.
Мягкая ссылка ведущая в никуда - ссылка, целевой файл которой отсутствует.

23. Создать прямые ссылки.
Прямая ссылка - это по-сути обычный файл. Мы удаляем целевой файл, но содержимое ссылки не меняется.

24. Создать собственную команду, которая будет использовать следующее: cd /usr; ls; cd - , с помощью alias.
25. С помощью команды cat написать любой текст и записать его в текстовый файл.

26. Удалить один текстовый файл
27. Создать пустую директорию и удалить её
28. Удалить директорию с 3-я текстовыми файлами

29. Создать пользователя
30. Поменять пароль нового пользователя

31. Найти текстовый документ с помощью команд Find и Grep

32. Воспользоваться логическими 'и' и 'или' как пример использовать команду ping
32.1 выполняются обе команды
32.2 вторая часть записана с ошибкой. Она не выполнилась.
32.3 и 32.4 выполняется только первая команда

## Практическая работа №1.2
### Цель: Научиться базовым функциям команды GREP.
1. Вы проводите поиск в Интернете, и видите, что используются две разные версии Python, и вы не знаете, какая из них был установлен в вашей системе установщиком Ubuntu или Debian, и устанавливал ли он какие-либо дополнительные модули?
Для поиска выведем список всех установленных `deb` пакетов `dpkg -l` , а затем отфильтруем этот список в grep: `| grep -i python`

2. Допустим, у вас возникли проблемы с вашим веб-сервером Apache, и вы обратились к одному из многих форумов в сети с просьбой о помощи. Добрая душа, которая вам ответила, попросила вас отправить содержимое вашего файла `/etc/apache2/sites-available/default-ssl`. Разве вам не было бы легче, если бы вы могли просто удалить все закомментированные строки?
используем инвертированный вывод `grep -v "#" /etc/apache2/sites-available/default-ssl.conf` **с указанием типа файла .conf. Иначе не грепает**

3. Например, предположим, что у вас есть целая папка, полная музыкальных файлов разных форматов. Вы хотите найти все файлы `.mp3` у исполнителя ABC, но вы не хотите никаких ремиксов. Как поступить?
Выполнение команды `find . -name "*.mp3" | grep -i queen | grep -vi "remix"` выглядит более наглядно, если разбить эти действия по шагам

4. Как отобразить количество строк до или после строки поиска?
В нашем примере, при исполнении команды `ifconfig | grep -B 2 eth0
` перед шаблоном запроса нет строк. Поэтому вывелась только строка поиска

5. Как вывести количество строк совпадения?
Не сразу понял суть команды. Немного изменил запрос и разбил исполнение по шагам.

6. Как выяснить количество совпадений?

7. Как найти файлы по заданным номерам строк?

8. Произвести поиск рекурсивной строки во всех каталогах.

9. Произвести поиск строк в архивах файлах Gzip. (создать zip архив см.п.1.10)
Создадим архив и попробуем выполнить поиск по нему командой `zgrep`.
Как видно на скрине, при выполнении команды `grep` поиск в архиве не происходит.

---
## Практическая работа №1.3
### Цель работы:
Научиться работать в VIM.
**3.1 Создание файла**
Создадим новый файл `newfile` и откроем его в vim


Режимы визуального выделения:
v- посимвольный

V- построчное выделение

Ctrl+v - блочное выделение

**3.2 Перемещение**
Не знаю как на скрине показать что я переместился например, на 3 слова используя клавишу w, а не просто двигая курсор стрелками. но могу написать, что на три слова сразу сместиться можно набрав на клавиатуре 3w.
**3.3 Поиск текста**
Простой поиск:

Регистронезависимый поиск:

Регистро зависимый поиск:

**3.4 Редактирование**
3.4.1 Удаление текста
В каждой строке файла я использовал по одной команде:
x — удалить символ на позиции курсора (солово "новы" без последней буквы)
d — удалить в заданном командой перемещения направлении. dl (удалил букву в слове "вторая")
dd — удалить строку. Фразы "А это третья" в файле нет.
D — удалить все символы от положения курсора до окончания строки. Конец фразы "Мы будем работать с этим файлом" обрезан.

r — заменить символ на позиции курсора (новые)
c — заменить в заданном командой перемещения направлении (заменил слово "вторая" на "пятая")
C — заменить до окончания строки (заменил "ья строчка" на "ий абзац")

3.4.2 Копирование и вставка
1 — установил курсор на слово файл, yb - скопировал предыдущее слово, перешел в конец строки, р - вставил слово.
2 - yy — скопировал всю строку
3 - p — вставил скопированную строку ниже текущей.
4 - yy — скопировал всю строку, P — вставил скопированную строку выше текущей.

3.4.3 Дополнительные команды редактирования
Посмотрел, как выглядит "J — присоединить строку ниже к текущей". Это как убрать перенос строки.
Отмену действий, наверное сложно показать на одном скрине.

3.5.1 Команды управления
Не буду портить файл, выйду без сохранения - :!q

**4. Заключение**
Скрин об успешном прохождении интерактива с [](https://www.openvim.com/) прилагаю
