| name | bash-linux |
| description | Шпаргалка по Bash/Linux: команды, операторы, перенаправления, обработка ошибок. Триггер — задачи на macOS/Linux про работу в терминале, сборку конвейеров, скрипты. |
| risk | unknown |
| source | community |
| date_added | 2026-02-27 |
Skill: bash-linux
Базовые шаблоны Bash для Linux/macOS.
1. Операторы и связки
Цепочки команд
| Оператор | Значение | Пример |
|---|
; | Запуск последовательно | cmd1; cmd2 |
&& | Запуск, если предыдущая успешна | npm install && npm run dev |
|| | Запуск, если предыдущая упала | npm test || echo "Tests failed" |
| | Передать вывод по конвейеру | ls | grep ".js" |
2. Файловые операции
Базовые команды
| Задача | Команда |
|---|
| Список всех файлов | ls -la |
| Найти файлы по шаблону | find . -name "*.js" -type f |
| Содержимое файла | cat file.txt |
| Первые N строк | head -n 20 file.txt |
| Последние N строк | tail -n 20 file.txt |
| Следить за логом | tail -f log.txt |
| Поиск в файлах | grep -r "pattern" --include="*.js" |
| Размер файла/каталога | du -sh * |
| Свободное место | df -h |
3. Управление процессами
| Задача | Команда |
|---|
| Список процессов | ps aux |
| Найти по имени | ps aux | grep node |
| Убить по PID | kill -9 <PID> |
| Кто слушает порт | lsof -i :3000 |
| Убить процесс на порту | kill -9 $(lsof -t -i :3000) |
| Запустить в фоне | npm run dev & |
| Список фоновых задач | jobs -l |
| Вернуть в foreground | fg %1 |
4. Обработка текста
Основные инструменты
| Инструмент | Назначение | Пример |
|---|
grep | Поиск | grep -rn "TODO" src/ |
sed | Замена | sed -i 's/old/new/g' file.txt |
awk | Извлечь столбцы | awk '{print $1}' file.txt |
cut | Вырезать поля | cut -d',' -f1 data.csv |
sort | Сортировка | sort -u file.txt |
uniq | Уникальные строки | sort file.txt | uniq -c |
wc | Подсчёт | wc -l file.txt |
5. Переменные окружения
| Задача | Команда |
|---|
| Показать все | env или printenv |
| Показать одну | echo $PATH |
| Установить временно | export VAR="value" |
| Установить только для команды | VAR="value" command |
| Добавить в PATH | export PATH="$PATH:/new/path" |
6. Сеть
| Задача | Команда |
|---|
| Скачать файл | curl -O https://example.com/file |
| GET-запрос к API | curl -X GET https://api.example.com |
| POST с JSON | curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL |
| Проверить порт | nc -zv localhost 3000 |
| Сетевые интерфейсы | ifconfig или ip addr |
7. Шаблон скрипта
#!/bin/bash
set -euo pipefail
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1" >&2; }
main() {
log_info "Starting..."
log_info "Done!"
}
main "$@"
8. Часто встречающиеся паттерны
Проверить, что команда существует
if command -v node &> /dev/null; then
echo "Node is installed"
fi
Значение по умолчанию для аргумента
NAME=${1:-"default_value"}
Чтение файла построчно
while IFS= read -r line; do
echo "$line"
done < file.txt
Цикл по файлам
for file in *.js; do
echo "Processing $file"
done
9. Отличия от PowerShell
| Задача | PowerShell | Bash |
|---|
| Список файлов | Get-ChildItem | ls -la |
| Рекурсивный поиск | Get-ChildItem -Recurse | find . -type f |
| Переменная окружения | $env:VAR | $VAR |
| Конкатенация строк | "$a$b" | "$a$b" (так же) |
| Проверка на null | if ($x) | if [ -n "$x" ] |
| Природа конвейера | По объектам | По тексту |
10. Обработка ошибок
Опции set
set -e
set -u
set -o pipefail
set -x
trap для очистки
cleanup() {
echo "Cleaning up..."
rm -f /tmp/tempfile
}
trap cleanup EXIT
Главное: Bash работает с текстом. Используй && для цепочек по успеху, set -e для безопасности, всегда оборачивай переменные в кавычки.
Когда использовать
Этот скилл применим, если задача требует выполнить шаги или действия из обзора выше: команды Bash, конвейеры, обработка текста, написание простых скриптов под Linux/macOS.
Ограничения
- Применяй скилл только когда задача явно подпадает под описанный охват.
- Не считай вывод заменой реальной валидации в окружении пользователя, тестов или экспертного ревью.
- Останови работу и задай уточняющий вопрос, если не хватает входных данных, прав, границ безопасности или критериев успеха.