TGViewer
DevOps Ready | IT DevOps Ready | IT @devops_ready · 7.63K subscribers
Post #1160 975
Как в Bash гарантированно удалить временные файлы через trap?

В shell-скриптах часто создают временную папку:
tmp_dir=$(mktemp -d)


А потом в конце вручную удаляют её:
rm -rf "$tmp_dir"


Проблема в том, что скрипт может завершиться раньше: ошибка команды, Ctrl+C, ранний exit. Тогда временные файлы останутся лежать на диске.

Для таких случаев в Bash используют trap:
tmp_dir=$(mktemp -d)
trap 'rm -rf "$tmp_dir"' EXIT


Теперь cleanup выполнится при выходе из скрипта почти в любом сценарии:
cp app.log "$tmp_dir/"
grep "ERROR" "$tmp_dir/app.log"


Даже если grep завершится ошибкой, trap всё равно сработает при выходе.

Это удобно сочетать со строгим режимом:
set -euo pipefail


Полный минимальный шаблон:
set -euo pipefail

tmp_dir=$(mktemp -d)
trap 'rm -rf "$tmp_dir"' EXIT


Если нужно выполнить несколько действий при завершении, лучше вынести cleanup в функцию:
cleanup() {
rm -rf "$tmp_dir"
}

trap cleanup EXIT


Такой подход полезен для архивов, временных конфигов, скачанных файлов, тестовых директорий и промежуточных данных в CI/CD.


➡️ DevOps Ready | #совет
  • ❤ 6
  • 👍 6
  • 🔥 4
More from @devops_ready
  1. Oct 2, 2026Знали, почему настройки systemd-сервиса лучше менять через systemctl edit? Допустим, прило…
  2. Oct 2, 2026⚡️5 фундаментальных курсов по ИБ по цене одного Это предложение для тех, кто готов войти в…
  3. Oct 2, 2026Этот инструмент поможет поять из чего на самом деле состоит Docker-образ! Он содержит терм…
  4. Oct 1, 2026Проверяем итоговую конфигурацию Docker Compose перед запуском! Когда проект использует баз…
  5. Oct 1, 2026🔄 Безопасный арсенал практических инструкций, курсов и инструментов 👩‍💻 Linux & Bash 🤔…
  6. Oct 1, 2026Шпаргалка по жизненному циклу Pod в Kubernetes! На картинке показано, как запрос проходит…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →