# Linux. Практическая работа № 1.
## 1.1. Работа в командной строке
### 1.1.1. Посмотреть под каким пользователем в системе Linux.
```bash=
whoami
```

### 1.1.2. Перейти в корневой каталог.
```bash=
cd /
```

### 1.1.3. Посмотреть содержимое каталога.
```bash=
ls
```

### 1.1.4. Определить типы команд ls, cd.
```bash=
type ls
type cd
```

### 1.1.5. Посмотреть из корневого каталога содержимое директории Home.
```bash=
ls /home/
```

### 1.1.6. Перейти в директорию /tmp.
```bash=
cd /tmp
```

### 1.1.7. Создать директорию /pt.
```bash=
mkdir /pt
```

### 1.1.8. Создать 3 текстовых документа 1.txt 2.txt 3.txt.
```bash=
touch 1.txt 2.txt 3.txt
```

### 1.1.9. Изменить или добавить содержимое текстового документа с помощью редакторов nano и vim.
```bash=
nano file.txt
vi file.txt
cat file.txt
```



### 1.1.10. Скопировать и переименовать директорию с файлами.
```bash=
cp -R dir dir1
```

### 1.1.11. Заархивировать директорию.
```bash=
tar -cv dir | gzip > dir.archive.tar.gz
```

### 1.1.12. Разархивировать директорию.
```bash=
gzip -d dir.archive.tar.gz
tar xvf dir.archive.tar
```

### 1.1.13. Посмотреть содержимое домашней директории и каталога usr одной командой.
```bash=
ls /home /usr
```

### 1.1.14. Посмотреть содержимое каталога в обратном порядке.
```bash=
ls /usr | sort -r
```

### 1.1.15. Посмотреть права на директорию.
```bash=
ls -dl /usr
```

### 1.1.16. Посмотреть права на текстовые файлы.
```bash=
ls -l
```


### 1.1.17. Переместить и переименовать один текстовый файл в директорию /tmp.
```bash=
mv 1.txt /tmp/moved.txt
```

### 1.1.18. Создать новую директорию, в ней создать новый текстовый документ, переместить из директории /tmp файл в новую директорию с заменой файла и запросом на его изменение.
```bash=
touch /tmp/newfile
mkdir newdir
touch ./newdir/newfile
mv /tmp/newfile ./newdir/newfile -i
```

### 1.1.19. Определить местоположение данного исполняемого файла ls, cd.
```bash=
type -a ls
type -a cd
```

### 1.1.20. Вывести краткое описание команды и утилиты ls, nano, rm.
```bash=
whatis ls nano rm
```

### 1.1.21. Создать символические ссылки.
```bash=
touch first
ln -s first second
ls -l first second
```

### 1.1.22. Создать символическую ссылку в никуда, продемонстрировать её.
```bash=
ln -s badlink
```

### 1.1.23. Создать прямые ссылки.
```bash=
ln first second
ls -i first second
```

### 1.1.24. Создать собственную команду, которая будет использовать следующее: cd /usr; ls; cd - , с помощью alias.
```bash=
alias lsusr="cd /usr; ls; cd -"
```

### 1.1.25. С помощью команды cat написать любой текст и записать его в текстовый файл.
```bash=
cat file.txt > file2.txt
```

### 1.1.26. Удалить один текстовый файл
```bash=
rm file2.txt
```

### 1.1.27. Создать пустую директорию и удалить её
```bash=
mkdir dir
rm -R dir
```

### 1.1.28. Удалить директорию с 3-я текстовыми файлами
```bash=
rm -R dir
```

### 1.1.29. Создать пользователя
```bash=
useradd newuser
```




### 1.1.30. Поменять пароль нового пользователя
```bash=
passwd newuser
```

### 1.1.31. Найти текстовый документ с помощью команд Find и Grep
```bash=
find /tmp/dir -type f | grep ?*.txt
```

### 1.1.32. Воспользоваться логическими 'и' и 'или' как пример использовать команду ping
```bash=
ping 127.0.0.1 -c 1 && ls /tmp
# к 128.0.0.1 доступа нет
ping 128.0.0.1 -c 1 && ls /tmp
ping 127.0.0.1 -c 1 || ls /tmp
ping 128.0.0.1 -c 1 || ls /tmp
```




## 1.2
### 1.2.1 Вы проводите поиск в Интернете, и видите, что используются две разные версии Python, и вы не знаете, какая из них был установлен в вашей системе установщиком Ubuntu или Debian, и устанавливал ли он какие-либо дополнительные модули?
```bash=
dpkg -l | grep -i python
```

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

### 1.2.3 Например, предположим, что у вас есть целая папка, полная музыкальных файлов разных форматов. Вы хотите найти все файлы `.mp3` у исполнителя ABC, но вы не хотите никаких ремиксов. Как поступить?
```bash=
find . –name "*.mp3" | grep –i ABC | grep –vi "remix"
```

### 1.2.4 Как отобразить количество строк до или после строки поиска?
```bash=
ifconfig | grep -A 4 eth0:
ifconfig | grep -B 2 lo:
```

### 1.2.5 Как вывести количество строк совпадения?
```bash=
ifconfig | grep -C 2 lo
```

### 1.2.6 Как выяснить количество совпадений?
```bash=
ifconfig | grep -c inet6
```

### 1.2.7 Как найти файлы по заданным номерам строк?
```bash=
grep -n "main" /home/kali/pypykatz/setup.py
```

### 1.2.8 Произвести поиск рекурсивной строки во всех каталогах.
```bash=
grep -r "function" *
```

### 1.2.9 Произвести поиск строк в архивах файлах Gzip. (создать zip архив см.п.1.10)
```bash=
zgrep -i error messages.gz
```

## 1.3 Vim
### 1.3.0 Описание Vim и установка
Vim - свободный текстовый редактор, созданный на основе более старого vi. Ныне это мощный текстовый редактор с полной свободой настройки и автоматизации, возможными благодаря расширениям и надстройкам (Wikipedia).
Проверим установлен ли vim

И установим его.

Vim установлен
### 1.3.1 Создание файла
```bash=
echo "Это новый файл.
Вот вторая строчка,
А это третья.
Это будет очень здорово." >> newfile
```

Откроем его в vim
```bash=
vim newfile
```


### 1.3.2 Перемещение
Основные функции
* h — перемещение влево
* j — перемещение вниз
* k — перемещение вверх
* l — перемещение вправо

Дополниельные сочетания
- gg — переход в начало документа
- G — переход в конец документа. Если предварительно ввести номер — переместиться на строку с этими номером
- w — перемещение к следующему слову. Если предварительно ввести количество — переместиться на это количество слов
- b — перемещение к предыдущему слову. Если предварительно вввести количество — переместиться на это количество слов назад
- e — перемещение к концу слова. Если предварительно указать количество — переместиться на указанное количество слов
- 0 — перемещение к началу строки
- $ — перемещение к концу строки
### 1.3.3 Поиск текста
Для поиска необходимо нажать / и сам текст, \с - регистронезависимость.



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


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

#### 1.3.4.3 Дополнительные команды редактирования
- u — отменить последнее действие
- <ctrl>-r — вернуть последнее отмененное действие
- J — присоединить строку ниже к текущей


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



### 1.3.6 Объединение командв
- y5w (y — копировать, 5 — количество, w — слов)
- dG (d — удалить, G — переход в конец файла)
dG

## 1.4 Задания на https://www.openvim.com
---
### 1.4.1 Introduction

### 1.4.2 Two modes, insert and normal

---
### 1.4.3 Basic movement: h, j, k, and l

---
### 1.4.4 Word movement: w, e, b

---
### 1.4.5 Number powered movement, e.g. 5w

---
### 1.4.6 Insert text repeatedly, e.g. 3iYes

---
### 1.4.7 Find a character, f and F

---
### 1.4.8 Go to matching parentheses, %

---
### 1.4.9 Go to start/end of line, 0 and $

---
### 1.4.10 Find word under cursor, * and #

---
### 1.4.11 Goto line, g and G

---
### 1.4.12 Search, /text with n and N

---
### 1.4.13 Insert new line, o and O

---
### 1.4.14 Removing a character, x and X

---
### 1.4.15 Replacing letter uder cursor, r

---
### 1.4.16 Deleting, d

---
### 1.4.17 Repeting, d

---
### 1.4.18 Visual mode, v

---
### 1.4.19 Real Vim awaits

---
### 1.4.20 The end

---