Если вам нужно написать некоторые временные файлы , которые только в прошлом, пока ваш сценарий или приложение запущено, используйте каталог указывает 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
…