Pure Bash Bible - Магия bash без внешних зависимостей
Это архивный репозиторий и может быть устаревшим.
Когда последний раз вы писали bash-скрипт и думали: "Нужно вызвать sed/awk/grep, но так не хочется добавлять лишние зависимости"? Знакомое чувство? Тогда Pure Bash Bible — именно то, что вам нужно.
Что это за проект?
Pure Bash Bible — это коллекция приемов и функций, реализующих популярные операции (работа со строками, файлами, массивами) средствами чистого bash, без вызова внешних утилит. Автор проекта — Dylan Araps, известный создатель neofetch.
Основная цель: сделать скрипты быстрее (вызов внешних программ в bash дорогой) и переносимее (не нужно проверять, установлен ли awk на целевой системе).
Почему это круто?
- Скорость — встроенные методы bash работают быстрее вызова внешних утилит
- Переносимость — скрипт будет работать везде, где есть bash
- Обучение — глубже понимаем возможности bash
Топ-5 фич, которые вас удивят
1. Работа со строками без sed/awk
# Обрезаем пробелы в начале и конце строки
trim_string() {
: "${1#"${1%%[![:space:]]*}"}"
: "${_%"${_##*[![:space:]]}"}"
printf '%s\n' "$_"
}
2. Разделение строки по разделителю
Альтернатива cut и awk -F:
split() {
IFS=$'\n' read -d "" -ra arr <<< "${1//$2/$'\n'}"
printf '%s\n' "${arr[@]}"
}
3. Проверка, содержит ли строка подстроку
Без вызова grep:
if [[ $var == *sub_string* ]]; then
printf '%s\n' "sub_string is in var."
fi
4. Чтение файла в массив
Альтернатива mapfile для старых версий bash:
while read -r line; do
file_data+=("$line")
done < "file"
5. Генерация UUID v4
Чистый bash без сторонних утилит:
uuid() {
C="89ab"
for ((N=0;N<16;++N)); do
B="$((RANDOM%256))"
case "$N" in
6) printf '4%x' "$((B%16))" ;;
8) printf '%c%x' "${C:$RANDOM%${#C}:1}" "$((B%16))" ;;
3|5|7|9) printf '%02x-' "$B" ;;
*) printf '%02x' "$B" ;;
esac
done
printf '\n'
}
Когда это особенно полезно?
- Контейнеры — когда нужно минимизировать образ
- Встроенные системы — где нет места для полноценного набора утилит
- Скрипты инициализации — которые выполняются до полной загрузки системы
- Кросс-платформенные скрипты — которые должны работать на разных UNIX-системах
Что внутри?
Проект охватывает:
- Строковые операции (trim, split, case conversion)
- Работу с массивами
- Файловые операции
- Цвета и форматирование вывода
- Арифметические операции
- Трюки с переменными
Как начать использовать?
- Клонируйте репозиторий:
git clone https://github.com/dylanaraps/pure-bash-bible.git
- Импортируйте нужные функции в свой скрипт:
source pure-bash-bible/strings.sh
- Или копируйте отдельные функции по мере необходимости.
Pure Bash Bible — must have для:
- Системных администраторов
- Девопсов, работающих с разными окружениями
- Любителей bash, желающих глубже изучить язык
- Авторов переносимых скриптов
Проект активно развивается, имеет 35k+ звёзд на GitHub и лицензию MIT. Если вы пишете на bash — держите эту библию под рукой!
Совет: Автор также выпустил книгу по bash, которую можно приобрести на Leanpub.
