Вы давно крутитесь в Bash или только осваиваете консоль? Всё равно найдутся трюки, которые удивят и вас. Порой именно простые советы буквально переворачивают привычный подход к написанию скриптов. Делюсь четырьмя приёмами, которые наведут порядок в ваших Bash-хаках — и писать будет приятно, и читать.
Записывайте пайплайны по строкам — мозг скажет спасибо
Пайплайн — это цепочка команд, соединённых символом "|", когда каждая следующая команда получает результат предыдущей. Обычно пайплайны выглядят так:
В целом, такой вариант работает, но читать тяжеловато — всё сливается в одну строку, а разобраться непросто.
Пример выше: глубокий обход текущей папки с подсчётом числа владельцев файлов. Команда специально растянута — чтобы показать всю суть пайплайна. Но куда изящней такой вариант: find . -type f -printf '%u\n' | sort | uniq --count.
Читая код или текст, мы непроизвольно выискиваем знакомые паттерны. Скорее всего, вы сразу ищете глазами "|", чтобы понять, где заканчивается одна команда и начинается другая. Но когда всё идёт впритык, приходится тратить лишние секунды на распознавание. Попробуйте вместо этого так:
Вертикальная вереница "|", как ступеньки, сразу делит команду на понятные блоки. Мозгу проще схватить суть.
Да и редактировать такую конструкцию удобнее: большинство редакторов позволяют быстро двигать или удалять целые строки — никакой путаницы.
Дробите код на "кирпичики" — и собирайте что угодно из них
Давайте разложим нашу команду на части — чтобы её легко было читать, менять и многократно использовать.
Код, который можно собирать по кусочкам (composable), — как из конструктора: простые функции складываются в сложные, и каждый элемент можно заменить отдельно.
Сначала пишем функцию, которая выдаёт "сырые" значения. Дальше — подключаем по необходимости преобразования:
Следующий шаг — вытащить нужные нам данные:
Теперь — посчитать, сколько чего получилось:
И чуть улучшаем итоговое сообщение:
Дальше — соединяем все эти кирпичики в новый пайплайн:
Такой код читать куда приятнее, и каждую часть можно моментально поменять или подстроить. Например:
В функции "clarify_date" используются регулярные выражения и POSIX-классы символов.
Признаюсь, я чуть усложнил пример — чтобы нагляднее показать приём. В настоящих скриптах обычно стартуют с крупной функции, а по ходу дела уже дробят её на части.
Заменяйте if-else на case, если можно — особенно при обработке команд
Switch/case — одно из моих любимых решений! Куча if-else только путает, а case выглядит аккуратно, и всё сразу понятно. Для обработки аргументов скрипта почти всегда ставлю в конце case — как диспетчер функций.
Когда диспетчер строится из "собираемых" функций, итоговый код читается почти как псевдокод:
Вся логика на виду — чтобы поменять результат, правишь одну-две строки.
Кстати, у меня была отдельная статья про case-диспетчер — там расписал максимально живой, “идиоматичный” способ работы с CLI-аргументами. Если объединить этот подход с тем, что выше — получите компактный, читаемый и очень гибкий диспетчер.
Однострочные проверки для коротких условий — и конец мусору
Чем короче и проще код, тем легче его воспринимать. Особенно если речь про короткие условия — простейшие if обычно идут плотно друг за другом и сильно захламляют скрипт:
Если "ветвлений" везде много, устаёшь уже на втором экране. Мне важно, чтобы код глазами просто проскакивался — поэтому для assert-проверок выбираю такой стиль:
Перед "}" обязательно ставьте точку с запятой, иначе Bash не простит.
Обычно такие однострочные проверки я пишу в начале скрипта и функций. Сразу видно — это just assert, всё понятно без комментариев, и никакой лишней воды.
3 приёма обработки ошибок в Bash, которыми я пользуюсь всегда
Прокачайте Bash-навыки: три надёжных способа не пропустить ни одной ошибки в ваших скриптах.
Главное для читаемости — узнаваемые паттерны. Глаза их быстро пропускают, а внимание сосредотачивается только на сути.
Подпишитесь на рассылку — только коротко, по делу, и про Bash
То, как вы пишете свой код, не менее важно, чем сама логика. Для меня эстетика — это не каприз, а инструмент. К тому же, этот подход подтверждён наукой: человек куда проще воспринимает визуально стройный, структурированный код, чем хаос без формата — так же, как красивый интерфейс проще в работе.
В теории интерфейсов самое главное — облегчать работу, расставлять акценты и делать всё максимально понятным за счёт разметки, отступов и визуальных сигналов. В коде то же самое: порядок и эстетика дают лёгкость чтения, и любой, кто возьмёт скрипт, сразу всё поймёт без диких усилий.
Пишите плотно и прозрачно, вводите свои визуальные маркеры, и ваш скрипт станет таким же дружелюбным, как лучшие приложения.
Хватит множить копипасту: разберитесь с Bash-функциями и забудьте про рутину
Освойте функции в Bash — и больше не тратьте время на однообразные действия: только эффективные, живые скрипты.
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru