--- 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)