Безопасное тестирование команд: echo и set -x

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

bashechoset -x

👁 В администрировании и автоматизации часто приходится запускать сложные команды: массовые удаления, перемещения файлов, или изменения прав. Ошибка в одной переменной может снести полсистемы. Поэтому перед выполнением полезно сначала посмотреть, какие команды реально сформирует скрипт.

📝 Предварительный просмотр команды через echo

Перед тем как запускать потенциально опасную операцию, можно вывести её итоговый вид. Это помогает убедиться, что переменные и пути подставились правильно. Команда не выполнится, но покажет, что именно будет удалено. После проверки можно убрать echo и выполнить её по-настоящему.

dir="/var/log/myapp"
echo rm -rf "$dir"/*

📝 Трассировка выполнения скрипта через set -x

Если скрипт начинает вести себя странно, можно включить режим трассировки. Bash будет выводить каждую команду перед выполнением. Это помогает быстро понять, какие команды реально выполняются и какие значения принимают переменные.

#!/usr/bin/env bash

set -x

backup_dir="/backup"
tar -czf "$backup_dir/archive.tar.gz" /var/www

set +x

📝 Временное включение трассировки для отдельных участков

Иногда не нужно логировать весь скрипт. Можно включить трассировку только вокруг проблемного участка. Так лог не будет захламляться, а нужный участок будет виден полностью.

set -x
systemctl restart nginx
journalctl -u nginx -n 20
set +x

❗️ В сложных bash-скриптах ошибки чаще всего происходят из-за неправильно подставленных переменных. Трассировка и предварительный просмотр команд позволяют поймать такие баги до того, как они что-нибудь сломают.

tags: #bash #полезно

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот в тёмной теме с терминалом и фрагментами bash-скриптов (echo rm -rf, set -x, tar, systemctl), с брендингом RECURA внизу.
Пример: вывод итоговой команды и трассировка выполнения в bash.

Читайте так же