December 1

10 трюков Bash, которые я хотел бы знать на своей первой работе в DevOps

Это перевод оригинальной статьи 10 Bash Tricks I Wish I Knew in My First DevOps Job

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

Потому что тратить три часа на отладку пропущенной точки с запятой — это не воспитание характера

Я до сих пор помню свою первую работу в DevOps. Свежий, полный оптимизма, со шпаргалкой, которая, как я думал, поможет мне справиться.

Bash? Насколько это сложно? Всего лишь немного cd, ls может, один или два grep. Верно? Неверно.

Реальность: Bash — это не просто оболочка. Это инструмент, который определяет, выглядите ли вы волшебником или тем, кто копирует скрипты Stack Overflow, не понимая их.

Я усвоил этот урок на собственном горьком опыте — корпя над сломанными скриптами в 16:00 в пятницу. И я здесь, чтобы избавить вас хотя бы от части этой боли.

Вот 10 трюков в Bash, о которых я бы хотел узнать раньше. Это не какие-то там «секреты гуру», а настоящие навыки выживания.

Создать на Copilot

1. Прекрати писать бесполезные циклы for: используй раскрытие фигурных скобок

Вам не нужно писать цикл для создания файлов file1.txt до file10.txt. Просто:

touch file{1..10}.txt

Вот и всё. Готово. Ваш старший инженер подумает, что вы гений. Или, по крайней мере, не полный новичок.

2. Используй set -euo pipefail

Скрипты дают сбой. В чём проблема? Они часто падают молча. По умолчанию Bash — это тот самый друг, который никогда не скажет вам, что что-то не так, пока не станет слишком поздно.

Поместите это в начало ваших скриптов:

set -euo pipefail
-e: выход при ошибке
-u: сбой при неопределенных переменных
-o pipefail: не позволяйте пайплайнам принимать ошибки на вход

Это как пристегнуть ремень безопасности к сценарию. Вы скажете мне спасибо, когда ваш конвейер не будет выдавать неисправный код.

3. Используй xargs как профи

Вы когда-нибудь это делали?

cat servers.txt | while read s; do ssh $s uptime; done

Да, мило. Но вот ещё лучше:

xargs -n1 -I{} ssh {} uptime < servers.txt

Чище. Быстрее. Кажется, что жульничаешь, но это просто Bash, сделанный как надо.

4. Освой grep -r и сэкономьте часы

Перестаньте это делать find . -name "*.log" | xargs grep "ERROR". Это крик о помощи.

Только:

grep -r "ERROR" .

Рекурсивный поиск. Меньше ввода текста. Больше производительности. Ваши запястья будут вам благодарны.

5. Используй алиасы или умри

Если вы печатаете kubectl 50 раз в день, зачем страдать?

alias k=kubectl

А теперь печатай k get pods как нормальный человек. Добавь это в свой ~/.bashrc и живи дальше.

6. Используй history как машину времени

История Bash — это не просто журнал. Это архив вашего выживания.

history | grep docker → найдите команду, которую забыли
!42→ повторите 42-ю команду
!!→ повторить последнюю команду (совет профессионала: с помощью sudosudo !!)

Это как Ctrl+Z для вашего мозга.

7. Лови ошибки с помощью trap, а не гоняйся за ними

Скрипты не работают. Логи врут. Добавьте трап:

trap 'echo "Error at line $LINENO"; exit 1' ERR

Теперь, вместо того, чтобы смотреть на 200-строчный скрипт и гадать, что же взорвалось, Bash вам подскажет. Какое облегчение.

8. tee — ваш лучший друг по отладке

Хотели когда-нибудь логировать вывод и одновременно видеть его? Не перенаправляйте поток дважды, как дикарь.

your_command | tee logfile.txt

Отлаживайте быстрее. Отправляйте быстрее. Спите крепче.

9. Знай разницу между &&, ;, ||

cmd1 && cmd2: запускает cmd2 только в случае, если cmd1 завершилась успешно
cmd1 || cmd2: выполняет cmd2 только если cmd1 завершилась с ошибкой
cmd1 ; cmd2: обе команды выполняются всегда, независимо от результата первой

Если вы этого не знаете, ваши скрипты будут вести себя как маленький ребёнок — непредсказуемо и хаотично.

10. Изучи подшеллы прежде, чем они не начнут вас преследовать

На этом я когда-то обжёгся. Круглые скобки () создают подшелл. Фигурные скобки {} — нет.

(cd /tmp && ls)   # runs in subshell, doesn’t change your current dir
{ cd /tmp && ls; }  # runs in current shell, changes your dir

Почувствуйте разницу. Иначе вам придётся полдня ломать голову над вопросом «почему мой скрипт не сменил каталоги?».

Последняя проверка реальностью

Bash не крут. Это не Kubernetes. Он не поместит вас на первую полосу Hacker News.

Но это тот самый клей, который держит весь ваш мир DevOps. Если вы справитесь с этим плохо, всё остальное тоже будет хромать.

Освойте эти приёмы, и вы перестанете выглядеть как новичок, который просто гуглит «пример цикла bash». Вы начнёте выглядеть как человек, который действительно разбирается в этом.

На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.