Wenn Sie temporäre Dateien schreiben müssen, die nur so lange dauern, wie Ihr Skript oder Ihre Anwendung ausgeführt wird, verwenden Sie das Verzeichnis, das von der TMPDIRUmgebungsvariablen angegeben wird, oder wenn diese Variable nicht definiert ist /tmp.
/tmpwird beim Booten auf einigen Systemen gelöscht (manchmal sogar im RAM, z. B. standardmäßig unter Solaris und bei einigen Linux-Installationen), sodass es nicht für Dateien verwendet werden kann, die einen Stromausfall oder einen Neustart überstehen müssen. /var/tmpKann für Dateien verwendet werden, die einen Neustart überstehen müssen, aber von Zeit zu Zeit vom Systemadministrator gesäubert werden. Wenn Ihre Anwendung Dateien dauerhaft speichern muss, schreiben Sie sie irgendwo in das Ausgangsverzeichnis des Benutzers (in ~/.programmingnoobsappoder ~/.cache/programmingnoobsapp) oder unter /var/lib/programmingnoobsappoder /var/cache/programmingnoobsapp.
Beachten Sie, dass dies /tmpvon allen Benutzern gemeinsam genutzt wird. Sie müssen daher Vorsichtsmaßnahmen treffen, wenn Sie dort eine Datei erstellen. Sie müssen einen Dateinamen auswählen, der noch nicht existiert, und Sie müssen darauf achten, dass Sie keine Race-Bedingung zulassen, bei der ein anderer Prozess die vor Ihnen liegende Datei mit unterschiedlichen Berechtigungen erstellt Wenn Sie als ein anderer Benutzer ausgeführt werden, kann er auf die Daten Ihres Prozesses zugreifen und diese ändern. Verwenden Sie den mktempBefehl, um eine Datei in /tmpoder zu erstellen /var/tmp. Erstellt standardmäßig mktempeine Datei in $TMPDIRoder /tmpwenn TMPDIRnicht gesetzt, ist dies normalerweise der richtige Ort. Wenn Sie mehrere temporäre Dateien verwenden müssen oder auch nur eine, empfehle ich, ein Verzeichnis für alle temporären Dateien mit zu erstellenmktemp -d und entfernen Sie es am Ende Ihres Skripts.
#!/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
…