Якщо вам потрібно написати деякі тимчасові файли , які тільки в минулому, поки ваш сценарій або додаток запущено, використовуйте каталог вказує TMPDIRзмінну оточення, або , якщо ця змінна не визначена, /tmp.
/tmpочищається під час завантаження в деяких системах (іноді це навіть в оперативній пам’яті, наприклад, за замовчуванням у Solaris та в деяких установах Linux), тому його не можна використовувати для файлів, які повинні пережити перерву живлення або перезавантаження. /var/tmpможна використовувати для файлів, які повинні пережити перезавантаження, але їх час від часу може очищати системний адміністратор. Якщо вашій програмі потрібно зберегти файли на постійній основі, запишіть їх десь у домашній каталог користувача (в ~/.programmingnoobsappабо ~/.cache/programmingnoobsapp) або під /var/lib/programmingnoobsappабо /var/cache/programmingnoobsapp.
Зауважте, що /tmpце спільний доступ між усіма користувачами, тому вам потрібно дотримуватися заходів безпеки під час створення файлу там. Вам потрібно вибрати ім’я файлу, яке ще не існує, і вам потрібно бути обережним, щоб не допустити перегонового стану, коли інший процес створює файл попереду вас з різними дозволами, які можуть бути отвором для безпеки (якщо інший процес працює як інший користувач, він може потім отримати доступ та змінити дані вашого процесу). Використовуйте mktempкоманду для створення файлу в /tmpабо /var/tmp. За замовчуванням mktempстворює файл у $TMPDIR, або /tmpякщо він TMPDIRне встановлений, зазвичай це правильне місце. Якщо вам потрібно використовувати кілька тимчасових файлів або навіть якщо вам потрібен один, я рекомендую створити каталог для всіх ваших тимчасових файлів за допомогоюmktemp -d та видаливши його в кінці сценарію.
#!/bin/sh
tmp_root=
trap 'rm -rf "$tmp_root"' EXIT INT TERM HUP
tmp_root=$(mktemp -d)
tmpfile1=$tmp_root/file1
tmpfile2=$tmp_root/file2
…