# Практическая работа №1 - Основы Linux
*Арина Алексеенко*
---
### Практическая работа №1.1 - Работа в командной строке
**Задания:**
1. Посмотреть под каким пользователем в системе Linux.
> $ whoami


2. Перейти в корневой каталог.
> $ cd /

3. Посмотреть содержимое каталога.
> $ cd /

4. Определить типы команд ls, cd.
> $ type cd
> $ type cd

5. Посмотреть из корневого каталога содержимое директории Home.
> $ ls home

6. Перейти в директорию /tmp.
> $ cd ../tmp

7. Создать директорию /pt.
> $ mkdir pt

8. Создать 3 текстовых документа 1.txt 2.txt 3.txt.
> $ touch 1.txt 2.txt 3.txt

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

> $ vim 1.txt


10. Скопировать и переименовать директорию с файлами.
> $ mv /tmp/pt/2.txt /home/kali

11. Заархивировать директорию.
> $ tar -cvf pt.tar.gz /tmp/pt

12. Разархивировать директорию.
> $ tar -xvf pt.tar.gz

13. Посмотреть содержимое домашней директории и каталога usr одной командой.
> $ ls /home && ls /usr


14. Посмотреть содержимое каталога в обратном порядке.
> $ ls -r

15. Посмотреть права на директорию.
> $ ls -l

16. Посмотреть права на текстовые файлы.
> $ ls -l

17. Переместить и переименовать один текстовый файл в директорию /tmp.
> $ mv /tmp/pt/2.txt /tmp
> $ mv 2.txt two.txt

18. Создать новую директорию, в ней создать новый текстовый документ, переместить из директории /tmp файл в новую директорию с заменой файла и запросом на его изменение.
> $ mkdir new
> $ mv /tmp/transport.txt /new
> $ chmod u+w transport.txt

19. Определить местоположение данного исполняемого файла ls, cd.
> $ where cd
> $ which ls

20. Вывести краткое описание команды и утилиты ls, nano, rm.
> $ whatis ls
> $ whatis nano
> $ whatis rm

21. Создать символические ссылки.
> $ ln -s secondlink thirdlink
> $ ls -l firstlink secondlink thirdlink

22. Создать символическую ссылку в никуда, продемонстрировать её.
> $ mkdir link && cd link
> $ echo "текст" > source
> $ ln -s source softlink
> $ rm source
> $ ls -l softlink

23. Создать прямые ссылки.
> $ touch firstlink
> $ ln firstlink secondlink
> $ ls -i firstlink secondlink

24. Создать собственную команду, которая будет использовать следующее: cd /usr; ls; cd - , с помощью alias.
> $ alias cdu="cd /usr" cd-="cd - " list="ls"

25. С помощью команды cat написать любой текст и записать его в текстовый файл.
> $ cat > cat.txt << EOF
heredoc> koshka
heredoc> to save
heredoc> EOF

26. Удалить один текстовый файл
> $ rm cat.txt

27. Создать пустую директорию и удалить её
> $ rmdir empty

28. Удалить директорию с 3-я текстовыми файлами
> $ rm -rf textes

29. Создать пользователя
> $ adduser petr


...

30. Поменять пароль нового пользователя
> $ passwd petr

31. Найти текстовый документ с помощью команд Find и Grep
> $ find /hide ".txt"

32. Воспользоваться логическими 'и' и 'или' как пример использовать команду ping
> $ ping 8.8.8.8 && ping 192.168.17.88
> $ ping 8.8.8.8 && ping 192.168.17.88


### Практическая работа №1.2 - Практическая работа “GREP”
**Задача:**
1. Если мы видим, что используются две разные версии Python, и не знаем, какая из них был установлена в нашей системе установщиком Ubuntu, и устанавливал ли он какие-либо дополнительные модули, используем следующую команду:
> $ dpkg -l | grep -i python

2. Поиск и фильтрация файлов**
- Удалить все закомментированные строки файла `/etc/apache2/sites-available/default-ssl`.
> $ grep –v "#" /etc/apache2/sites-available/default-ssl`
Опция -v указывает grep инвертировать свой вывод, что означает, что вместо печати совпадающих строк grep сделает противоположное и выведутся строки, которые не соответствуют выражению, в этом случае – закомментированные строки.

3. Найти все файлы .mp3**
- Предположим, что у нас есть целая папка с музыкальными файлами. Нужно найти все файлы `.mp3` у исполнителя Abba, но вы не ремикс.
> $ find /home/kali/Downloads "*.mp3" && grep –i "Abba" && grep –vi "remix"

4. Отображение количества строк до или после строки поиска
> grep -B [num] -A [num] [pattern] [file]

5. Поиск количества строк совпадения?
> grep -c [pattern] [file]

6. Поиск количества совпадений
> grep -o -i [pattern] [file] | wc -l

7. Поиск по заданным номерам строк?
> $ grep -n -i [pattern] [file]

8. Произвести поиск рекурсивной строки во всех каталогах.
> $ grep -r [pattern] *


9. Произвести поиск строк в архивах файлах Gzip. (создать zip архив см.п.1.10)
> $ zgrep -i [pattern] [zip file]


### Практическая работа №1.3 - Vim
Прошла туториал по vim:

v — режим обычного (посимвольного) визуального выделения перемещением курсора вверх, вниз, влево или вправо.

V — режим построчного визуального выделения. Строки выделяются целиком перемещением вверх или вниз.

[ctrl]-v — режим блочного визуального выделения.

/ - поиск текста.



Удаление текста.
- x — удалить символ на позиции курсора
- d — удалить в заданном командой перемещения направлении. Например, “dl” удаляет один символ справа
- dd — удалить строку
- D — удалить все символы от положения курсора до окончания строки
- Замена текста
- r — заменить символ на позиции курсора заданным после команды символом
- c — заменить в заданном командой перемещения направлении. Например, “cb” заменяет предыдущее слово. Для набора текста на замену запускается режим вставки.
- C — заменить до окончания строки. Текст на замену набирается в режиме вставки.

Копирование и вставка.
- y — копировать в заданном далее направлении
- yy — копировать всю строку
- Y — копировать до окончания строки
- p — вставить последнюю скопированную (или удаленную!) строку ниже текущей
- P — вставить последнюю скопированную (или удаленную!) строку выше текущей

Команды управления.
- :q — выход из программы. Действие не будет выполнена, если не сохранить изменения
- :q! — выход из программы с отменой всех изменений, которые не были сохранены
- :w — сохранить изменения. При первичном сохранении или сохранении в другой файл укажите имя через пробел
- :e — редактировать указанный далее файл
- :bn — редактировать следующий файл (если открыто несколько файлов)
- :bp — редактировать предыдущий файл (если открыто несколько файлов)
- :qw – сохранить файл и выйти
