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-запрос.