Коды завершения команд в Bash
Разбираем коды завершения Linux-команд от 0 до 255 и специальную переменную $?. Учимся сохранять статус, строить обработку ошибок и завершать Bash-скрипт нужным кодом через exit.
Фото: Erik Mclean / Pexels
Фото: Luis Gomes / Pexels
← Все темы
Скрипты и практические примеры на Bash: автоматизация, администрирование Linux и DevOps-подходы к работе с инфраструктурой.
Разбираем коды завершения Linux-команд от 0 до 255 и специальную переменную $?. Учимся сохранять статус, строить обработку ошибок и завершать Bash-скрипт нужным кодом через exit.
Фото: Erik Mclean / PexelsСравниваем время инициализации и выполнения разных вариантов for и while в Bash, а также цикла gawk. Тест на пяти миллионах итераций показывает влияние генерации списка, расхода памяти и содержимого тела цикла.
Фото: Giant Asparagus / PexelsПишем небольшой Bash-парсер, который превращает большой php.ini в компактный шаблон без комментариев и пустых строк. Разбираем чтение файла построчно, continue и регулярные выражения в конструкции [[ =~ ]].
Фото: RDNE Stock project / PexelsДобавляем в Bash-скрипты терминальные окна yes/no, поля ввода, меню и прогресс-бар с помощью whiptail. На готовых примерах разбираем коды возврата и перенаправление файловых дескрипторов.
Фото: Rafael Minguet Delgado / PexelsУстанавливаем Bash-утилиту tmpmail и создаём одноразовый почтовый адрес прямо в терминале. Показываем генерацию адресов, выбор домена, просмотр входящих писем и получение последнего сообщения в текстовом виде.
Фото: cottonbro studio / PexelsРазбираем interactive, non-interactive, login, non-login, restricted и другие типы оболочек Linux. Смотрим, какие файлы профиля они читают, почему скрипт работает вручную, но ломается в cron, и как определить текущий режим.
Фото: Kaboompics / PexelsРазбираем разницу между суффиксами ; и + у find -exec, сокращаем число запускаемых процессов и подключаем xargs для параллельной обработки файлов. Практические команды помогают ускорить поиск и безопасно передавать группы …
Фото: Mehmet Turgut Kirkgoz / PexelsЭкспериментируем с /dev/zero, поведением read и нулевым символом в C-строках. Затем находим смещение строки через strings и точечно патчим бинарный файл одним нулевым байтом с помощью dd.
Фото: cottonbro studio / PexelsРазбираем двойную обработку команд в Bash через eval на примерах brace expansion, косвенного раскрытия переменных и файловых дескрипторов. Показываем, почему перенаправление с переменной требует ещё одного прохода интерпретатора.
Фото: Ryleigh Gordon / PexelsАвтоматизируем передачу файлов с сервера скриптом на Bash: проверяем размер, упаковываем крупные данные, загружаем их через curl в transfer.sh и получаем ссылку. Отдельно обсуждаем лимиты сервиса и безопасность.
Фото: Kampus Production / PexelsСтроим взаимодействие между Bash-процессами через сигналы SIGRTMIN и trap без временных файлов. Пишем сервер-слушатель и клиент, разделяем события по индексам сигналов и разбираем порядок обработки и приоритеты.
Фото: Elina Volkova / PexelsЗапускаем фоновые команды в Bash через оператор &, управляем заданиями с помощью wait и jobs и получаем PID через $!. Собираем параллельный загрузчик файлов и сравниваем нативный подход с GNU Parallel.
Фото: Mehmet Turgut Kirkgoz / PexelsBash — раздел BashDays, посвященный Bash, Shell scripting и работе в терминале Linux.
В разделе публикуются материалы по:
Здесь собраны практические примеры скриптов, приемов работы в терминале и способов автоматизации повседневных задач администратора.