---
# System prepended metadata

title: Практическая работа 1
tags: [' linux basics', pt-start]

---

---
title: Практическая работа 1
tags: pt-start, linux basics
---

## Работа в bash
1. В данном списке комманд отображено: пользователь, под которым осуществляется работа
2. Переход в корневую папку
3. вывод содержимоо директории
4. переход в папку tmp
5. создание в ней директории pt
6. создание нескольких текстовых файлов
> [name=despersy]
> Для работы была установлена os desbian booksworm, с предустановленным ssh сервером, но с граф. интерфейсом. На работу это не повлияет, так как вся работа производится в xterm, который не работает с буфером обмена. 
> Стоит отметить, что, как вариант, я мог переключиться на другой tty через ctrl+alt+tty_num, однако это переключает tty на моей основной машине, ибо на host-системе стоит pop-os.

![](https://i.imgur.com/4SDxO3y.png)
Данная команда позволяет опредленить тип какой-либо команды
```command
type <command>
```
![](https://i.imgur.com/SSsWvJn.png)
На изображении ниже вывод содержимого директории, после чего следует отображение содержимого файла при помощи cat, его редактирование и еще один вывод уже отредактированного файла.
```commands
cat <file>
nano <file>
```
![](https://i.imgur.com/t6frmkp.png)
На данном иображении выполняется копирование директории.
```commands
cp -r <dir from> <dir to>
mv <old name> <new name>
```
![](https://i.imgur.com/J2HV3P9.png)
Создание архива со всем содержимым директории.
```commands
tar -cvf <atchive.tar> <directory>
```
![](https://i.imgur.com/FPVcreg.png)
Разархивирование директории
```commands
tar -xvf <archive.tar>
```
![](https://i.imgur.com/HW8bsol.png)
Вывод содержимого домашней директории и директории /usr
```commands
ls <dir1> <dir2>
```
![](https://i.imgur.com/v0P8Ut7.png)
Вывод содержимого директории в обратном порядке
```commands
ls -r 
```
![](https://i.imgur.com/VWzQn1i.png)
Просмотр прав на директорию
```commands
ls -l | grep <dir>
```
![](https://i.imgur.com/pkYV3Rh.png)
Вывод всех текстовых файлов
```commands
ls -l | grep *.txt
```
![](https://i.imgur.com/e4QqYiK.png)
Создание файла, перенос его в текущую директорию, вывод содержимого текущей директории
```commands
touch <file>
mv <file> .
ls -l
```
![](https://i.imgur.com/qfcUeBZ.png)
Создание новой директории, после чего в ней создается новый текстовый документ, который в дальнейшем перемещается из директории /tmp в новую директорию с заменой файла и запросом на его изменение.
```commands
mkdir <dir>
touch <dir>/<file>
echo "newer" > <dir1>/<file>
mkdir ~/<dir>
echo "old" > ~/<dir>/<file>
cat ~/<dir>/<file>
mv -f <dir>/<file> ~/<dir>/
ls ~/<dir>/<file>
cat ~/<dir>/<file>
```
![](https://i.imgur.com/VHUGQxR.png)
Определение исполняемых файлов
```commands!
type -a <command>
```
![](https://i.imgur.com/PjBm3hb.png)
Вывод краткого описания комманд
```commands
whatis <command1> <command2>
```
![](https://i.imgur.com/UjnzeHh.png)
Создание символьной ссылки на файл
```commands
ln -s <file source> <link to it>
```
![](https://i.imgur.com/qYJ0VrV.png)
Создание символьной ссылки в пустое место. В таком случае файл линкуется на себя
```commands
ln -s <file source> <nowhere>
```
![](https://i.imgur.com/BC1FRSk.png)
Создание физической ссылки на файл. В такой ситуации при выводе ls файла не будет отображаться как ссылка.
```commands
ln -P <file source> <link to it>
```
![](https://i.imgur.com/kpDy1sQ.png)
Для создания комманды можно использовать alias в bashrc. Он позволяет обозначить какой-либо ввод в терминал выполнением команды. 
> [name=despersy]
> В данной ситуации мы переходим в директоию /usr и обратно.

```
alias <command name>="cd /usr cd -"
```
![](https://i.imgur.com/0rX80eJ.png)
Запись в файл с помощью команды cat
```commands
touch <file>
cat > <file>
```
![](https://i.imgur.com/4RuTAWP.png)
Удаление файла
```
rm <file>
```
![](https://i.imgur.com/mT6ShTt.png)
Удаление директории
```
rm -rf <dir>
```
![](https://i.imgur.com/FsxiFnA.png)
Удаление директории с файлами
```
rm -rf <dir>
```
![](https://i.imgur.com/At8XYUU.png)
Добавление пользователя
```
adduser <username>
```
![](https://i.imgur.com/MfLfx2F.png)
Смена пароля пользователя. Делать желательно от рута.
```
passwd <username>
```
![](https://i.imgur.com/1s4V73g.png)
поиск файла через ls и через find
```
ls | grep <desired file>
find <desired file>
```
![](https://i.imgur.com/I1BpwUZ.png)
Использовние && и || на примере команды ping.

В данной ситуации при отсутствии ответа от ip (к примеру, 12.12.12.12) мы выдаем в консоль none и пингуем другой адрес.
```
ping -c <ip> || (echo 'none' && ping -c <ip>)
```
![](https://i.imgur.com/fAdgKXU.png)
## Работа с grep
Вывод всех установленных модулей python
```
dpkg -l | grep -i python
```
![](https://i.imgur.com/agoUsxX.png)
копирование файла без коментариев.
```
grep -v "#" <file> > <new file>
```
![](https://i.imgur.com/QD30eZs.png)
Вывод файлов по паттерну исключая другой. Для этого создается несоклько похожих файлов, чтобы показать работу поиска. После чего бперем файлы, в которых нет remix, однако присутствует abc в названии.
```
find . -name "*.mp3" | grep -i ABC | grep -vi "remix"
```
![](https://i.imgur.com/KTp9Rcb.png)
Также поиск может быть преблизительный. К примеру можно после файла, совпавшего по паттерну вывести следующий после него файл, либо предыдущий. Если в паттерне могут быть совпадения, то команда сработае для последнего файла.
```
ls -l | grep -A 1 <pattern>
ls -l | grep -B 1 <pattern>
```
![](https://i.imgur.com/6TNjY6w.png)
Вывод количества совпадений по паттерну.
```
ls -l | grep -c <pattern>
```
![](https://i.imgur.com/ZL3WMwk.png)
Проверка строки до или после фала, совпавшего по паттерну.
```
ls -l | grep -C <num to check around file> <pattern>
```
![](https://i.imgur.com/X0hPGCk.png)
Поиск строки в файле. Для этого заранее в файл были записаны строчки, после чего по ним производилась проверка.
```
grep -n "pattern" <file>
```
![](https://i.imgur.com/uKfi1Oc.png)
Также можно выполнить поиск по совпадению по всем файлам в директории. * значит искать по всем файлам в текущей директории.
```
grep -r <pattern> *
```
![](https://i.imgur.com/GK8MfOf.png)
вывод ip адреса можно также успростить при помощи grep. Достаточно увидеть, что в строчках с ip адресом присутствует inet и при помощи этого вывести адреса
```
ip a | grep -w "inet"
```
![](https://i.imgur.com/PTG9sgy.png)
Поиск по архиву. Для этого используется команда zgrep.
> [name=despersy]
> У меня система свежая, поэтому ошибок пока еще не было, а логи еще не успели уйти в архивы

```
zgrep -i error <archive.xz>
```
![](https://i.imgur.com/ozQLQI7.png)
Создание архива из всех файлов в директории, создание архива из папки и всего ее создаержимого, добавление пароля на директорию, распаковка архива.
```
zip <zip name> *
zip -r <zip name> <dir>
zip -P <passwd> -r <zip name> <dir>
unzip <zip name>
```
![](https://i.imgur.com/SCDkQ2t.png)
## Работа в vim
Создаем файл, после чего закидываем в него текст. Через / можно осуществить поиск по совпадениям в тексте. 
![](https://i.imgur.com/CFbAQJQ.png)
Также можно совершить поиск у учетом регистра при помощи /\. Если совпадений нет, то и курсор никуда не передвинется, однако об этом vim не сообщит.
![](https://i.imgur.com/RQCI81z.png)
При помощи yy можно скопировать строку и вставить ее в другое место. Вставить ее можно с помощью p.
![](https://i.imgur.com/50ruHg5.png)
При помощи dd можно вырезать, именно вырезать строку, ибо потом ее все еще можно вставить через p.
![](https://i.imgur.com/B48dy3C.png)
Также есть сайт openvim.com, на котором можно упражняться. 
> [name=despersy]
> К сожалению, он не является чем-то поможим на klavaro, а следовательно, там присутствует просто часть терминала и все. Самой тренировки не будет.

![](https://i.imgur.com/IjT85WD.png)
