<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Bash on llexa — Linux, bash и серверный стек</title><link>https://llexa.ru/tags/bash/</link><description>Recent content in Bash on llexa — Linux, bash и серверный стек</description><image><title>llexa — Linux, bash и серверный стек</title><url>https://llexa.ru/images/og-default.png</url><link>https://llexa.ru/images/og-default.png</link></image><generator>Hugo</generator><language>ru-RU</language><lastBuildDate>Tue, 28 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://llexa.ru/tags/bash/index.xml" rel="self" type="application/rss+xml"/><item><title>bash-функции продвинутые: local, return и nameref</title><link>https://llexa.ru/posts/bash-functions-advanced/</link><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/bash-functions-advanced/</guid><description>local прячет переменную от вызывающего кода, return отдаёт только код возврата (не значение), declare -n nameref — способ вернуть данные без eval</description></item><item><title>Makefile с нуля: targets, .PHONY и автоматические переменные</title><link>https://llexa.ru/posts/makefile-basics/</link><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/makefile-basics/</guid><description>make не только для компиляции C — targets с зависимостями, .PHONY для команд-обёрток, $@/$&amp;lt; вместо повторения имён файлов</description></item><item><title>printf: форматирование вывода вместо echo</title><link>https://llexa.ru/posts/printf-formatting/</link><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/printf-formatting/</guid><description>%s/%d/%f со спецификаторами ширины и точности, printf -v для записи в переменную без подстановки команд, почему printf переносимее echo</description></item><item><title>age: современная замена gpg для шифрования файлов</title><link>https://llexa.ru/posts/age-encryption/</link><pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/age-encryption/</guid><description>age-keygen генерирует пару ключей X25519 без web-of-trust и keyserver&amp;#39;ов; шифрование и расшифровка — по одной команде без конфигов</description></item><item><title>bash regex: =~ и BASH_REMATCH без внешних утилит</title><link>https://llexa.ru/posts/bash-regex/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/bash-regex/</guid><description>Оператор =~ в [[ ]], BASH_REMATCH для захвата групп, разница basic/extended regex внутри самого bash</description></item><item><title>expect: автоматизация того, что просит ввести пароль вручную</title><link>https://llexa.ru/posts/expect-automation/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/expect-automation/</guid><description>expect/send для CLI-утилит без флага --non-interactive, spawn/expect eof, autoexpect для записи сценария</description></item><item><title>logger и systemd-cat: пишем в journald из bash</title><link>https://llexa.ru/posts/logger-systemd-cat/</link><pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/logger-systemd-cat/</guid><description>logger -t/-p для отправки сообщений в syslog/journald прямо из скриптов и cron, без файлов логов вручную</description></item><item><title>awk: BEGIN/END, массивы и функции — не только '{print $1}'</title><link>https://llexa.ru/posts/awk-programs-basics/</link><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/awk-programs-basics/</guid><description>awk — не только однострочник для колонок: полноценные программы с BEGIN/END, ассоциативными массивами и своими функциями</description></item><item><title>grep продвинутый: -P, ripgrep и контекст вокруг совпадений</title><link>https://llexa.ru/posts/grep-advanced-pcre-ripgrep/</link><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/grep-advanced-pcre-ripgrep/</guid><description>grep умеет больше, чем egrep -i: perl-совместимые регулярки, контекст вокруг найденной строки и более быстрая замена rg</description></item><item><title>Markdown в терминале: glow, mdcat и frogmouth вместо cat</title><link>https://llexa.ru/posts/markdown-tui-viewers/</link><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/markdown-tui-viewers/</guid><description>README.md и заметки в терминале обычно читают через cat — сырой текст с решётками и звёздочками. TUI-рендеры показывают их как в браузере</description></item><item><title>pv: прогресс-бар для любого pipe</title><link>https://llexa.ru/posts/pv-pipe-viewer/</link><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/pv-pipe-viewer/</guid><description>pv показывает скорость и прогресс там, где cp и dd молчат — копирование, бэкапы, распаковка через pipe</description></item><item><title>bash readline: set -o vi, bind и горячие клавиши</title><link>https://llexa.ru/posts/bash-readline-vi-mode/</link><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/bash-readline-vi-mode/</guid><description>Readline — движок редактирования командной строки bash: vi-режим, bind и горячие клавиши, о которых редко вспоминают</description></item><item><title>date: форматирование времени в bash</title><link>https://llexa.ru/posts/date-bash-formatting/</link><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/date-bash-formatting/</guid><description>date — не только текущее время: парсинг, арифметика дат и кастомный формат вывода прямо в shell</description></item><item><title>fc: редактирование и повтор команд из истории bash</title><link>https://llexa.ru/posts/fc-bash-history/</link><pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/fc-bash-history/</guid><description>fc — встроенная команда bash для просмотра, редактирования и повторного запуска команд из истории, забытая альтернатива стрелке вверх</description></item><item><title>nohup, disown, setsid: процесс без терминала</title><link>https://llexa.ru/posts/nohup-disown-setsid/</link><pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/nohup-disown-setsid/</guid><description>nohup, disown и setsid — три способа оторвать процесс от терминала, чтобы он пережил разрыв SSH-сессии</description></item><item><title>xxd, hexdump, base64: бинарная инспекция из терминала</title><link>https://llexa.ru/posts/xxd-hexdump-base64/</link><pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/xxd-hexdump-base64/</guid><description>xxd, hexdump и base64 — посмотреть на файл как на байты, найти сигнатуру формата и передать бинарный файл текстом</description></item><item><title>tmux+SSH своими руками: DIY-версия без Rust</title><link>https://llexa.ru/posts/tmux-diy-workbench/</link><pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/tmux-diy-workbench/</guid><description>Финал серии: собираем свой мини-индекс tmux-сессий по SSH из bash и `~/.ssh/config` — без компиляции</description></item><item><title>bash history: не только стрелка вверх</title><link>https://llexa.ru/posts/bash-history-tricks/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/bash-history-tricks/</guid><description>!! и !$ экономят десятки нажатий в день — если знать, что они делают</description></item><item><title>heredoc и herestring в bash</title><link>https://llexa.ru/posts/heredoc-herestrings/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/heredoc-herestrings/</guid><description>heredoc передаёт команде многострочный текст без экранирования кавычек — удобно для конфигов и SQL прямо в скрипте</description></item><item><title>flock: защита cron-задач от наложения</title><link>https://llexa.ru/posts/flock-locking/</link><pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/flock-locking/</guid><description>flock не даст двум экземплярам скрипта запуститься одновременно — даже если cron нажал раньше, чем предыдущий завершился</description></item><item><title>ulimit и лимиты ресурсов процессов</title><link>https://llexa.ru/posts/ulimit-limits/</link><pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/ulimit-limits/</guid><description>Без правильных лимитов nginx и postgres упираются в 1024 открытых файла — даже если ядро позволяет миллион</description></item><item><title>vmstat: мониторинг памяти и активности ядра</title><link>https://llexa.ru/posts/vmstat-basics/</link><pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/vmstat-basics/</guid><description>vmstat показывает картину состояния системы одной строкой: очередь CPU, своп, дисковый IO и прерывания</description></item><item><title>yq: YAML в командной строке</title><link>https://llexa.ru/posts/yq-yaml-cli/</link><pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/yq-yaml-cli/</guid><description>yq — как jq, но для YAML: читать поля, редактировать конфиги на месте и конвертировать между форматами прямо из терминала</description></item><item><title>nice, renice, ionice: приоритеты процессов и I/O</title><link>https://llexa.ru/posts/nice-renice-ionice/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/nice-renice-ionice/</guid><description>nice задаёт CPU-приоритет при запуске, renice меняет его на ходу, ionice управляет приоритетом дискового I/O</description></item><item><title>mapfile и readarray: файл в bash-массив</title><link>https://llexa.ru/posts/bash-mapfile/</link><pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/bash-mapfile/</guid><description>mapfile читает stdin или файл построчно в индексированный массив — без цикла while read и без IFS-магии</description></item><item><title>bash best practices: пишем скрипты надёжно</title><link>https://llexa.ru/posts/bash-best-practices/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/bash-best-practices/</guid><description>set -euo pipefail, [[ ]] вместо [ ], ${var:-default}, readonly, trap EXIT — минимальный набор</description></item><item><title>GNU parallel: xargs с параллелизмом и прогресс-баром</title><link>https://llexa.ru/posts/gnu-parallel/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/gnu-parallel/</guid><description>parallel -j4, --progress, --eta — параллельный запуск команд там, где xargs -P не хватает</description></item><item><title>tee: stdout в файл и в пайп одновременно</title><link>https://llexa.ru/posts/tee-command/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/tee-command/</guid><description>tee -a, tee с process substitution — дублировать вывод без потери данных</description></item><item><title>bash: nameref и косвенные переменные</title><link>https://llexa.ru/posts/bash-nameref/</link><pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/bash-nameref/</guid><description>declare -n создаёт псевдоним переменной — функция может писать в переменную вызывающего кода без глобалов и eval</description></item><item><title>bc, awk и $(( )): математика в bash</title><link>https://llexa.ru/posts/bash-math-bc/</link><pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/bash-math-bc/</guid><description>$(( )) для целых, bc для дробей с точностью, awk для float в одну строку — три инструмента для разных задач</description></item><item><title>GNU screen: терминальный мультиплексор без tmux</title><link>https://llexa.ru/posts/screen-basics/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/screen-basics/</guid><description>screen -S для именованных сессий, Ctrl+a d для detach, screen -r для возврата, -x для совместного доступа — классика, которая есть везде</description></item><item><title>md5sum, sha256sum, b3sum: контрольные суммы в Linux</title><link>https://llexa.ru/posts/checksums-basics/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/checksums-basics/</guid><description>md5sum сломан с 1996-го — коллизии найдены. sha256sum — стандарт для проверки загрузок, b3sum (BLAKE3) — в 3–5× быстрее на больших файлах</description></item><item><title>mktemp и tmpfs: временные файлы без мусора</title><link>https://llexa.ru/posts/mktemp-tmpfs/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/mktemp-tmpfs/</guid><description>mktemp -d создаёт уникальную директорию, trap &amp;#39;rm -rf $TMP&amp;#39; EXIT чистит её при любом выходе, tmpfs держит данные только в RAM</description></item><item><title>diff / patch: правки без git</title><link>https://llexa.ru/posts/diff-patch/</link><pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/diff-patch/</guid><description>diff -u для unified-патча, patch -p1 для применения, diff -rq для сравнения каталогов — версионирование там, где нет git</description></item><item><title>envsubst: переменные окружения в конфиг-шаблонах</title><link>https://llexa.ru/posts/envsubst-templates/</link><pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/envsubst-templates/</guid><description>envsubst &amp;lt; template.conf, явный список переменных, чтобы не задеть чужие $VAR — генерация nginx-конфигов и CI/CD-шаблонов на лету</description></item><item><title>sort / uniq: топ команд без awk</title><link>https://llexa.ru/posts/sort-uniq-tips/</link><pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/sort-uniq-tips/</guid><description>sort -k для числовой сортировки по полю, uniq -c для подсчёта, связка sort | uniq -c | sort -rn — топ-N без единой строчки awk</description></item><item><title>cut / paste / join: обработка табличных данных без awk</title><link>https://llexa.ru/posts/cut-paste-join/</link><pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/cut-paste-join/</guid><description>cut -d: -f для CSV/TSV, paste для склейки колонок, join для SQL-подобного слияния по ключу</description></item><item><title>timeout: защита от зависших команд</title><link>https://llexa.ru/posts/timeout-command/</link><pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/timeout-command/</guid><description>timeout 5s cmd, --kill-after для упорных процессов, использование в cron — никаких вечно висящих скриптов</description></item><item><title>bash: process substitution — &lt;() и &gt;()</title><link>https://llexa.ru/posts/bash-process-substitution/</link><pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/bash-process-substitution/</guid><description>&amp;lt;(cmd) и &amp;gt;(cmd) подставляют вывод команды как файл — без временных файлов и именованных пайпов</description></item><item><title>xargs: параллельность и тонкая настройка</title><link>https://llexa.ru/posts/xargs-advanced/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/xargs-advanced/</guid><description>xargs -P для параллельного запуска, -I{} для подстановки, -0 с find -print0 — безопасная и быстрая обработка файлов</description></item><item><title>bash getopts: парсинг флагов без боли</title><link>https://llexa.ru/posts/bash-getopts/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/bash-getopts/</guid><description>while getopts, $OPTARG, $OPTIND, shift — разбор аргументов командной строки в bash-скриптах</description></item><item><title>inotifywait: события файловой системы в реальном времени</title><link>https://llexa.ru/posts/inotifywait-monitor/</link><pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/inotifywait-monitor/</guid><description>Мониторинг изменений файлов и директорий через inotify — основа для авто-перезагрузки сервисов</description></item><item><title>Интерактив #1: chmod — права доступа своими руками</title><link>https://llexa.ru/posts/chmod-interactive/</link><pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/chmod-interactive/</guid><description>Песочница в браузере: набери chmod, ls -l, stat — и сразу увидишь результат. 4 задания + свободная игра</description></item><item><title>at и batch: отложенный запуск команд</title><link>https://llexa.ru/posts/at-batch-scheduler/</link><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/at-batch-scheduler/</guid><description>at — однократный запуск в точное время, batch — при низкой нагрузке. Альтернатива cron для разовых задач</description></item><item><title>bash: массивы — индексированные и ассоциативные</title><link>https://llexa.ru/posts/bash-arrays/</link><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><guid>https://llexa.ru/posts/bash-arrays/</guid><description>arr=() для списков, declare -A для словарей. Итерация, срезы, подсчёт элементов — шпаргалка</description></item></channel></rss>