Bash (Bourne Again SHell) — коротко
Bash — это командная оболочка и язык сценариев для Unix/Unix-подобных систем. Она даёт интерактивную командную строку (CLI) и позволяет запускать скрипты для автоматизации.
- Поддерживает переменные, функции, условия, циклы и шаблоны имён файлов.
- Имеет встроенные команды для работы с файлами, процессами и сетью.
- Сценарии варьируются от простых одноразовых команд до сложных процедур.
Зачем Bash тестировщику?
- Быстрее, чем GUI: команды часто выполняются быстрее, чем клики в интерфейсе.
- Работа с серверами без GUI: многие стенды и прод-серверы доступны только через CLI.
- Логи и диагностика: поиск и фильтрация логов, сбор артефактов для баг-репортов.
- Тестовые данные: генерация данных и базовая автоматизация через скрипты.
Что такое CLI?
Помимо GUI и API существует CLI — интерфейс командной строки. В Bash вы вводите команды текстом и получаете текстовый вывод. Это удобно для точных, повторяемых действий.
Структура команды в Bash
- Имя команды: что запустить (
ls
,mkdir
). - Опции/флаги: модификаторы поведения, обычно с
-
(например,ls -l
). - Аргументы: «над чем» выполнять (например, в
mkdir newdir
—newdir
). - Перенаправление ввода/вывода:
>
,>>
,2>
для записи вывода/ошибок в файл. - Конвейер (pipe):
|
передаёт вывод одной команды на вход другой.
ls -l
Показать детальный список файлов и папок.
ls -a
Показать все файлы, включая скрытые.
.env
), которые могут влиять на работу приложения.mkdir temp_files
Создать новую папку.
touch test.txt
Создать пустой файл.
rmdir empty_dir
Удалить пустую папку.
rm -r temp_files
Удалить папку со всем содержимым.
Что означают права доступа?
Команда ls -l
выводит строку вида -rw-r--r--
. Первая буква: d
— папка, -
— файл. Остальные 9 символов — это права для владельца, группы и остальных (по 3 символа на каждого).r
(read) — право на чтение, w
(write) — на запись, x
(execute) — на выполнение.
mv report.log archive/
Переместить или переименовать.
cp config.json config.bak
Скопировать файл.
cat config.json
Показать содержимое файла.
less app.log
Постраничный просмотр большого файла.
nano config.json
Открыть файл в простом редакторе.
vim config.json
Открыть файл в мощном редакторе.
grep "ERROR" app.log
Найти строки со словом "ERROR" в файле.
grep -i "error" app.log
Найти строки без учета регистра.
grep -v "INFO" app.log
Показать все строки, КРОМЕ указанных.
find . -name "*.json"
Найти все файлы по имени.
echo "Test data" >> data.txt
Вывести текст и дописать его в файл.
cat app.log | grep "ERROR"
Передать вывод одной команды другой.
ps aux | grep "java"
Показать процессы и отфильтровать.
kill 12345
Завершить процесс по его ID (PID).
ping -c 4 google.com
Проверить доступность сервера.
curl api.example.com/users/1
Отправить GET-запрос.
curl -X POST -d '{"name":"test"}' api.example.com/users
Отправить POST-запрос.