Yalnızca komut dosyanız veya uygulamanız çalıştığı sürece devam eden bazı geçici dosyalar yazmanız gerekiyorsa, TMPDIR
ortam değişkeni tarafından belirtilen dizini kullanın veya bu değişken tanımlanmamışsa /tmp
,.
/tmp
bazı sistemlerde önyükleme zamanında temizlenir (bazen RAM'de bile, örneğin Solaris'te ve bazı Linux kurulumlarında varsayılan olarak), bu nedenle bir güç kesintisi veya yeniden başlatmadan kurtulması gereken dosyalar için kullanılamaz. /var/tmp
yeniden başlatma işleminden sağ çıkması gereken, ancak sistem yöneticisi tarafından zaman zaman temizlenebilen dosyalar için kullanılabilir. Uygulamanızın dosyaları kalıcı olarak kaydetmesi gerekiyorsa, bunları kullanıcının ana dizininde ( ~/.programmingnoobsapp
veya içinde ~/.cache/programmingnoobsapp
) veya altında /var/lib/programmingnoobsapp
veya altında bir yere yazın /var/cache/programmingnoobsapp
.
/tmp
Tüm kullanıcılar arasında paylaşıldığını unutmayın , bu nedenle orada bir dosya oluştururken önlem almanız gerekir. Henüz mevcut olmayan bir dosya adı seçmeniz ve başka bir işlemin önünüzde dosyayı farklı izinlerle oluşturduğu bir yarış durumuna izin vermemeye dikkat etmeniz gerekir; farklı bir kullanıcı olarak çalışıyorsa, işleminizin verilerine erişebilir ve bunları değiştirebilir). Veya mktemp
içinde bir dosya oluşturmak için komutu kullanın . Varsayılan olarak, bir dosya oluşturur , ya da eğer genellikle doğru yerde olan düzdür. Birden fazla geçici dosya kullanmanız gerekiyorsa veya tek bir dosyaya ihtiyacınız olsa bile, tüm geçici dosyalarınız için bir dizin oluşturmanızı öneririz./tmp
/var/tmp
mktemp
$TMPDIR
/tmp
TMPDIR
mktemp -d
ve betiğinizin sonunda bunu kaldırabilirsiniz.
#!/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
…