"Мобильная" разработка. [Bash и основные утилиты терминала]
Tags: tutorial, bash, linux, beginners
Published: 2023-08-18 09:25:00

## sh и bash

`sh` (Bourne Shell) и `bash` (Bourne Again SHell) оба являются командными интерпретаторами (оболочками) для Unix-подобных систем, но между ними есть ряд ключевых различий:

1. **История**:
    - `sh`. Один из первых командных интерпретаторов для Unix, созданный Стивеном Борном в 1970-х годах.
    - `bash`. Создан Брайаном Фоксом в рамках проекта GNU в конце 1980-х годов как свободная замена `sh`.
2. **Функциональные возможности**:
    - `bash` содержит все особенности `sh`, плюс множество улучшений и дополнений. Например:
        - Поддержка истории команд.
        - Поддержка автодополнения команд по нажатию `Tab`.
        - Расширенные возможности тестирования с `[[ ]]` вместо `[ ]`.
        - Функции и массивы.
        - Улучшенный синтаксис для управления заданиями.
3. **Совместимость**:
    - `bash` обычно работает в режиме совместимости с `sh`, когда запущен как `sh`, что позволяет ему исполнять скрипты, написанные для `sh`. Однако есть некоторые особенности поведения `bash`, которые могут не совпадать с традиционным `sh`.
4. **Популярность и распространение**:
    - `bash` стал стандартной оболочкой во многих Linux-дистрибутивах и macOS (хотя в последних версиях macOS заменён на zsh).
    - `sh` часто ссылается на другие оболочки в современных системах. Например, в Debian `sh` на самом деле является символической ссылкой на `dash`.
5. **Скрипты**:
    - Если скрипт начинается с `#!/bin/sh`, он должен быть совместим с `sh` и не использовать особенности `bash`, если только не известно, что `/bin/sh` на самом деле является `bash` (некоторые дистрибутивы могут заменять `/bin/sh` на `bash`).

В общем, `bash` - это более современная и функциональная оболочка по сравнению с `sh`, но, тем не менее, `sh` до сих пор продолжает оставаться важным стандартом совместимости. В дальнейшем мы будем использовать в Termux `bash`, поэтому ниже рассмотрим все основные команды `bash`, которые нам понадобятся.

## Termux 

Как говорилось ранее, Termux - это приложение-эмулятор терминала. Именно его мы будем использовать для нашей работы. 

Termux использует `bash` как свою оболочку терминала. Мы рассмотрим здесь далеко не все команды `bash` - я расписал здесь только те, которые с наибольшей вероятностью понадобятся вам в будущем. К тому же, я крайне не рекомендую вам сейчас заучивать их все, так как справка по ним всегда доступна, а с опытом большая часть команд вообще станет использоваться на автомате. Советую просто пройтись по ним глазами и сразу же перейти к выполнению размещённого в конце домашнего задания, что сразу же даст куда более основательное понимание работы с терминалом. 

## Основные команды Bash

В общем виде команда в `bash` имеет такой синтаксис:
```bash
command [OPTIONS] [ARGUMENTS]
```
- `[OPTIONS]` - набор опций, которые обычно начинаются со знака "минус" `-` для короткой версии опции (например, `-a`) или с двух знаков "минус" `--` для полного названия опции (например, `--all`).
- `[ARGUMENTS]` - аргументы к опциям или самой команде.

### Клавиши быстрого доступа

- `Ctrl + C`: прервать текущую команду.
{% embed https://www.youtube.com/shorts/ZfURZ78XF_g %}
Также `Ctrl + C` можно использовать, чтобы прервать текущий ввод длинной команды, которую вы больше не хотите выполнять.
- `Ctrl + Z`: приостановить текущий процесс (можно вернуть на передний план с помощью `fg`).
{% embed https://youtube.com/shorts/34h2-sGgDdM %}
- `Ctrl + D`: завершить текущую сессию.
- `Ctrl + L`: очистить экран.
- `Ctrl + R`: обратный поиск в истории команд.
- `Ctrl + A`: перейти в начало строки.
- `Ctrl + E`: перейти в конец строки.
- Нажмите `Tab` после начала ввода имени файла, директории или команды, и терминал попробует автоматически его дополнить.

### Навигация

- `ls`: показать содержимое директории: не скрытые папки и файлы.
```bash
ls
```
![ls пример работы](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dge1f05sgltrmpu9xoql.png)
Чтобы увидеть скрытые папки и файлы (в Unix системах они начинаются с точки в названии файла), необходимо добавить аргумент `-a` к команде.
```bash
ls -a
```
![ls -a](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xofpof8vmdjkblxrurzy.png)
Если добавить аргумент `-l`, команда выведет каждый файл/папку отдельной строкой. Можно скомбинировать с аргументом  `-a`.
```bash
ls -la
```
![ls -la](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ayargu5gyd7c3cnk4av5.png)
- `pwd`: вывести текущую рабочую директорию.
```bash
pwd
```
![pwd](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m9i5sqpx24kyul0b9838.png)
- `cd`: изменение директории. По умолчанию вы находитесь в домашней папке `~`, а изменить директорию можно, передав новый путь к команде `cd newFolder`, `cd newFolder/subFolder/subSubFolder`. 
```bash
cd folderA
```
![cd/pwd](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ex3k0rcodbaj77avt5rg.png)
Чтобы вернуться назад, можно использовать `cd -` - вы вернётесь к папке, в которой находились до предыдущего вызова `cd`, а вызвав `cd ..`, вы перейдёте к родительской папке.
```bash
cd -
```

```bash
cd ..
```
![cd .., cd -](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/knln16f5rvaamm14xdcb.png)

### Файловые операции

- `touch`: создать пустой файл. Для применения достаточно просто дописать имя файла `touch newFile`.
```bash
touch newFile
```
![touch newFile](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t6xnb4gbjtmrzgwejhio.png)
- `mkdir`: создать директорию. Работает аналогично `touch`.
```bash
mkdir subFolderB
```
![mkdir](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l701i8ir776ieej0o3jy.png)
Если необходимо создать целую вложенность из папок, можно использовать аргумент `-p`:
```bash
mkdir subFolderC/subSubFolderD -p
```
![mkdir -p](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6c6bc34vke0bab3wzgtp.png)
- `cp`: копировать файлы или директории. Для использования команды нужно передать путь к старому файлу и путь к новому файлу.
```bash
cp oldPath newCopy
```
![cp](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5r2fjof5mikuv5xzbfjm.png)
Для копирования папок необходим аргумент `-r` в конце команды.
- `mv`: переместить или переименовать файлы/директории. Аналогичен `cp`, только он переименовывает или перемещает файлы вместо копирования
```bash
mv oldFileName newFileName
```
![mv](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0xphvkq5o5gudb6o8c1i.png)
- `rm`: удалить файлы или директории. Чтобы удалить файл, достаточно передать к нему путь, а для удаления папки потребуется передать аргумент `-r`.
```bash
rm subFolderA -r
rm fileName
```
![rm](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bnbbwel8kxaen7ad0jxi.png)
- `rmdir`: удалить пустую директорию. Аналогичен `rm`.
```bash
rmdir subFolderB
```
![rmdir](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vxyc8u4nkjj5z2q8mf05.png)

### Текстовые редакторы

- `nano`: простой текстовый редактор. Для того чтобы отредактировать новый или уже существующий файл, достаточно ввести `nano path/to/file`, и нам откроется редактор `nano`:
```bash
nano fileToEdit
```
![nano](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r8rr36d7f4i8fntfj4q6.png)
Теперь мы можем вносить наши изменения в файл, практически как в обычно текстовом редакторе:
![nano](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0mwf8ggjp1n8qfnqgbzk.png)
Снизу нам доступна панель действий (справка, поиск, замена, выход и другие):
![nano](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q5fbsrnp8hobsgy3qjxd.png)
Чтобы вызвать какое-либо действие (например, выведем справку), нужно зажать `CTRL` и соответствующую клавишу:
![nano](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1pupohhn0u02vs9dgrg9.png)
И получаем нашу справку:
![nano](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/064rcyqmnfs7sp9jdtli.png)
Чтобы сохранить файл, нужно нажать `CTRL + x`.
![nano](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ehcr5237iar28pqxnt1m.png)
Выведется вопрос, желаете ли вы сохранить ваши изменения. Если нажать `N`, изменения не сохранятся, а редактор закроется. `CTRL + c` вернёт вас в режим редактирования, а `Y` - сохранит ваши изменения.
![nano](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ka1njtcb9xe9csxe8478.png)
Нажимаем на `Y`, чтобы сохранить файл. Дополнительно редактор спросит, как назвать файл, который вы хотите сохранить. Если всё указано правильно, достаточно нажать `Enter`:
![nano](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9gpf0lrqrcdl338gpco7.png)
И мы можем воспользоваться командой `cat`, чтобы вывести новое содержимое файла:
```bash
cat fileToEdit
```
![nano cat](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cfs3r4rxzt5256v31ssf.png)
- `vi` или `vim`: расширенный текстовый редактор. 
- `emacs`: мощный текстовый редактор с множеством функций.

Для работы с `vi`/`vim` и `emacs` крайне рекомендую рассмотреть их документации: [vim](https://www.vim.org/docs.php), [emacs](https://www.gnu.org/software/emacs/documentation.html), так как для раскрытия всех нюансов их работы и взаимодействия потребуются целые отдельные статьи, ориентированные на начинающего пользователя. В то же время nano вам будет более чем достаточно для решения большинства запросов по редактуре текста в терминале.

### Работа с текстом

- `echo`: вывести строку текста.
```bash
echo Hello World!
```
![echo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oexodm5qha2f9zme3tsj.png)
- `cat`: вывести содержимое файла.
```bash
cat fileToEdit
```
![nano cat](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cfs3r4rxzt5256v31ssf.png)
- `less` и `more`: аналогично `cat`, просмотр содержимого большого файла постранично. Удобен для просмотра логов:
```bash
less article.md
more article.md
```
![less](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/phsnlt2cisd554ln0843.png)
Чтобы выйти, необходимо нажать `q`.
- `grep`: поиск в тексте. Синтаксис команды:
```bash
grep [OPTIONS]... PATTERNS [FILES]...
```
Больше про паттерны и опции можно прочитать [здесь](https://www.gnu.org/software/grep/manual/grep.html).
Для примера поищем `'ChatGPT'` в файле `article.md`:
```bash
grep --color ChatGPT article.md
```
![grep](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yozn2qbdzdm06pew1rh6.png)

### Информация о системе
   
- `man`: просмотреть руководство по команде.
Вам скорее всего понадобится установить эту команду:
```bash
pkg install man
```
Пример использования достаточно прост:
```bash
man cat
```
![man](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xtrwmn4odh2q20u2m7qm.png)
- `df`: показать доступное дисковое пространство. Аргумент `-h` сделает вывод более читабельным:
```bash
df -h
```
![df](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a74l32ukvplltxirq0qa.png)
- `du`: подсчёт занятого места в директориях. Аргумент `-h` сделает вывод более читабельным:
```bash
du -h
```
![du](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k5t0hqs6b20qfp4dlnjt.png)

### Сеть

- `ping`: проверка соединения с хостом.
```bash
ping [host]
```

```bash
ping google.com
```
![ping](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/34azcc37nu4at0owfuok.png)
- `netstat`: сетевая статистика.
```bash
netstat
```
![netstat](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ttkbprkrbvzms6hc3djf.png)
- `ifconfig` (или `ip` в некоторых дистрибутивах): конфигурация сетевого интерфейса.
```bash
ifconfig
```
![ifconfig](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3nlzmenl0jo1wt17nqkm.png)

### Работа с архивами

- `tar`: архивация и разархивация файлов.
Если у вас есть несколько файлов или каталогов, которые вы хотите заархивировать в один файл, вы можете использовать следующую команду:
```bash
tar -cvf archive_name.tar file1 file2 dir1
```
> Где:
> - `c` означает создание архива.
> - `v` означает режим подробного вывода (verbose), чтобы увидеть, какие файлы добавляются.
> - `f` говорит `tar` использовать следующий аргумент как имя файла архива.

Извлечение файлов из архива:
```bash
tar -xvf archive_name.tar
```
- `zip`, `unzip`: работа с ZIP-архивами. Аналогичен tar, но проще и создает `.zip` архивы.
Архивация нескольких файлов:
```bash
zip archive_name.zip file1.txt file2.txt file3.txt
```
Архивация каталога (с включением всех файлов и подкаталогов):
```bash
zip -r archive_name.zip directory_name/
```
Исключение файлов при архивации:
```bash
zip archive_name.zip directory_name/ -x \*exclude.txt
```
Добавление файлов в существующий архив:
```bash
zip -u archive_name.zip new_file.txt
```
Создание зашифрованного zip-архива (вам будет предложено ввести пароль):
```bash
zip -e archive_name.zip file.txt
```
Извлечение всех файлов из архива:
```bash
unzip archive_name.zip
```
Извлечение определённых файлов из архива:
```bash
unzip archive_name.zip file1.txt file2.txt
```
Просмотр содержимого архива без извлечения:
```bash
unzip -l archive_name.zip
```
Извлечение файлов в определённый каталог:
```bash
unzip archive_name.zip -d destination_directory/
```

### Управление процессами

- `ps`: просмотр активных процессов.
```bash
ps
```
![ps](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2gzah6estrhkfjdvwyv5.png)
- `kill`: завершение процесса.
```bash
kill [signal] pid
```

```bash
kill -9 11689
```
`-9` - сигнал для прерывания процесса.
![kill](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3q140dk716tsz13k4yfo.png)

### Управление пакетами (зависит от дистрибутива):

- `pkg`: менеджер пакетов Termux. Менеджер пакетов нужен, чтобы устанавливать новые пакеты, обновлять и удалять старые, эдакий терминальный Play Store. Перед установкой новых пакетов крайне рекомендуется обновить существующие пакеты командой:
```bash
pkg upgrade
```
В процессе обновления/установки пакетный менеджер может запросить дополнительные подтверждения. Чтобы согласиться, нужно нажать `Y`, а потом `Enter`:
![pkg](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3wvucsl99c02puw9lx1u.png)
Также возможны дополнительные вопросы во время обновления определённых пакетов. Рекомендую использовать опцию по умолчанию и просто прожать `Enter`:
![pkg](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7hlmagxtq3cijirvkr10.png)
Чтобы получить справку, нужно использовать команду `help`, например:
```bash
pkg help
```
![pkg help](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nxjdn99p7esw6du1ciop.png)
Чтобы установить новый пакет, нужно использовать команду `install`, например:
```bash
pkg install nodejs
```
Также дополнительное согласие может потребоваться во время установки:
![pkg install](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/piil895rcfm5uhr9xgq8.png)
Теперь мы можем воспользоваться новыми пакетами:
![node](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lxeh8oxl8xekfxawlnuy.png)
Чтобы удалить существующий пакет, нужно использовать команду `uninstall`, например:
 ```bash
pkg uninstall nodejs
```
Также дополнительное согласие может потребоваться во время удаления:
![pkg uninstall](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vhr5rw6p6cti941rgjpq.png)
Теперь команда недоступна:
![pkg](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rohr0noqkkac5ngkupge.png)

### Поиск файлов

- `find`: поиск файлов в директории.
Поиск файлов с именем "example.txt" в каталоге `/home/user` и во всех его подкаталогах:
```bash
find /home/user -name "example.txt"
```
Поиск каталогов с именем "mydir" в каталоге `/home/user`:
```bash
find /home/user -type d -name "mydir"
```
Поиск файлов в каталоге `/home/user`, размер которых превышает 100 МБ:
```bash
find /home/user -type f -size +100M
```
Поиск по содержимому с помощью `grep`:
```bash
find /home/user -type f -exec grep -l "my_search_term" {} \;
```
Это только верхушка айсберга всех возможностей команды `find`. Она имеет множество других опций и комбинаций, которые позволяют выполнять сложные поисковые запросы. Чтобы узнать больше, вы можете обратиться к справочной странице команды, набрав `man find` в терминале.

### Управление разрешениями

Управление разрешениями является ключевой частью безопасности. Разрешения определяют, кто и как сможет взаимодействовать с файлами и каталогами.

#### Типы разрешений
- **Read (r)**: разрешение на чтение содержимого файла или просмотр содержимого каталога.
- **Write (w)**: разрешение на изменение содержимого файла или добавление/удаление файлов в каталоге.
- **Execute (x)**: разрешение на выполнение файла (если это исполняемый файл) или вход в каталог.

#### Три категории пользователей

- **Owner (u)**: владелец файла или каталога.
- **Group (g)**: группа пользователей, ассоциированная с файлом или каталогом.
- **Others (o)**: все остальные пользователи.

#### Команды для управления разрешениями

1. `chmod`: изменение прав на файл или директорию. У команды `chmod` есть два режима: символьный и цифровой. В символьном режиме вы можете указать, как изменить разрешения с использованием символов:
- **u** - владелец файла
- **g** - группа файла
- **o** - другие пользователи
- **a** - все пользователи (то есть ugo)
И операторы:
- **+** - добавить разрешение
- **-** - удалить разрешение
- **=** - установить разрешение
А также типы разрешений:
- **r** - разрешение на чтение
- **w** - разрешение на запись
- **x** - разрешение на выполнение
Примеры:
Дать владельцу право на выполнение файла:
```bash
chmod u+x filename
```
Удалить у группы право на запись в файл:
```bash
chmod g-w filename
```
Дать всем пользователям (владелец, группа, другие) право на чтение файла:
```bash
chmod a+r filename
```
Установить разрешения так, чтобы только владелец мог читать и записывать файл, а все остальные могли только читать:
```bash
chmod u=rw,go=r filename
```

В числовом режиме разрешения представлены тремя числами (октетами):
- 4 - чтение (r)
- 2 - запись (w)
- 1 - выполнение (x)
Примеры:
Установить разрешения так, чтобы владелец мог читать, записывать и выполнять файл; группа могла читать и выполнять; другие пользователи могли только читать:
```bash
chmod 755 filename
```
Здесь 7 (rwx) для владельца, 5 (r-x) для группы и 5 (r-x) для других.
Установить разрешения так, чтобы только владелец мог читать и записывать файл, а всем другим не было предоставлено никаких разрешений:
```bash
chmod 600 filename
```
Здесь 6 (rw-) для владельца, 0 (---) для группы и 0 (---) для других.

Используя команду `ls -l`, вы можете просмотреть текущие разрешения файла и при необходимости изменить их с помощью `chmod`.

2. `chown`: изменение владельца файла или директории. Предположим, у нас есть файл `example.txt`, и мы хотим изменить его владельца на пользователя `john`:
```bash
chown john example.txt
```
Также можно изменить группу файла с помощью `chown`. Если мы хотим, чтобы файл `example.txt` принадлежал пользователю `john` и группе `developers`, мы можем использовать следующую команду:
```bash
chown john:developers example.txt
```
Если вы хотите рекурсивно изменить владельца для директории и всех её поддиректорий и файлов, вы можете использовать флаг `-R`:
```bash
chown -R john:developers directory_name/
```
3. `chgrp`: изменение группы файла или директории. Предположим, у нас есть файл `example.txt`, и мы хотим изменить его группу на `developers`:
```bash
chgrp developers example.txt
```
Если вы хотите рекурсивно изменить группу для директории и всех её поддиректорий и файлов, вы можете использовать флаг `-R`:
```bash
chgrp -R developers directory_name/
```

Чтобы узнать больше о каждой из этих команд и их опциях, вы можете использовать страницы руководства man, например: `man chmod`, `man chown`, и `man chgrp`.

### Разное

- `alias`: создание псевдонимов для команд.
```bash
alias grep="grep --color"
```
![alias](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/04zw06orsd8dk6vhaqge.png)
- `export`: экспорт переменных окружения.
```bash
export NAME=VALUE
```
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ve7znzrc8vfiopti0sc5.png)
Переменные окружения можно использовать как в самой оболочке, так и в подпроцессах:
```bash
export GREETING="Hello"
bash -c 'echo $GREETING'
```
![export bash](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rxput4m6aw1phcvf8a30.png)

- `env`: вывод или установка переменных окружения.
```bash
env
```
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vli6et0vevibwgx8dq60.png)
- `wget` и `curl`: загрузка файлов из интернета.
Вам скорее всего понадобится установить эту команду:
```bash
pkg install wget
```
`wget` в основном используется для скачивания файлов:
```bash
wget https://dev.to/mainarthur/how-to-automate-job-application-with-chatgpt-in-3-steps-3blg
```
![wget](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fe7m0zxa9l9r98doc07z.png)
Указав аргумент `-O`, можно указать, куда сохранить файл:
```bash
wget https://dev.to/mainarthur/how-to-automate-job-application-with-chatgpt-in-3-steps-3blg -O index.html
```
![wget](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9i9ulg1bpsrrfqhcd1ex.png)
Это лишь базовые примеры использования `wget`. У этой утилиты есть много других возможностей и параметров, которые можно изучить, обратившись к официальной документации или введя `man wget` в командной строке (если вы находитесь на Unix-подобной системе).

`curl` - это инструмент командной строки, который позволяет выполнять различные запросы к серверу и взаимодействовать с ним, чаще всего по протоколам HTTP и HTTPS, но также и по многим другим протоколам.
```bash
curl ipinfo.io
```
![curl](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/do4wo2deuza2zdl400ay.png)
Это только базовые примеры использования `curl`. У этого инструмента есть множество других опций и возможностей. Для получения подробной информации и изучения всех функций можно обратиться к официальной документации или ввести `man curl` в командной строке на Unix-подобных системах.

### Заключение

У bash и Unix ещё очень много важных аспектов (пайпы, перенаправления, скрипты, условия, циклы, функции), однако знания базовых команд будет достаточно для простого использования терминала. В случае же использования чего-то нового будут даваться необходимые дополнительные пояснения и объяснения.

## Домашнее задание

Попробуйте каждую из перечисленных в этом списке команд в Termux на вашем устройстве: просмотрите их справки и попытайтесь их вызвать с успешным результатом, чтобы у вас сложилось чёткое представление, как они работают.

*Обязательно подписывайтесь на мой аккаунт dev.to и Telegram-канал, скоро будет ещё больше контента:* https://t.me/MainArthur