Bash oluşturma geçici dosyaları
Objektif olarak daha iyi yollar bash komut dosyaları, geçici dosyaları oluşturmak için vardır?
Ben normalde sadece fikrimi script bittiğinde silinir beri geçici dosya-123 gibi ne gelirse söyleyin. Yaparken herhangi bir dezavantajı bu geçici dosya-123 Olası üzerine dışında geçerli klasör var mı? Ya da orada daha dikkatli bir şekilde geçici bir dosya oluşturma herhangi bir avantaj mı?
CEVAP
mktemp(1)
man sayfasına göre oldukça iyi açıklıyor:
Geleneksel olarak, kabuk betikleri ile programın adını al bir sonek olarak pıd ve geçici bir dosya adı olarak kullanın. Bu tür düzeni öngörülebilir değildir ve yarattığı yarış durumdur adlandırma kazanmak için bir saldırgan için kolay. Daha güvenli, hala düşük olsa da, bir yaklaşım geçici bir dizin aynı adlandırma şeması yapmak. Süre bu geçici bir dosya olmayacak garanti izin vermiyor altüst, hala hizmet saldırının basit bir inkar sağlar. İçin bu işlev yerine kullanılması önerilir sebep.
İşlev benim her zamanki çağırma gibi bir şey
mydir=$(mktemp -dt "$0")
çalışabilir ve güvenli bir şekilde dosyaları sayabilirim geçici dizini okunabilir ve yararlı oluşturur.
Edit: mktemp
standart değil, ama birçok platform var. Yukarıdaki komut OS üzerinde bir dizin oluşturur X, ama başarısız olur GNU coreutils' *X*s ile öneki belirtmek için gereken işlev,, mktemp -dt "$0.XXXXXXXXXX"
gibi. (Çaktırma, ceving)
Bu arada, geçici dosyaları güvenli oluşturma sadece daha fazla kabuk komut dosyası için önemlidir. Bu python File::Temp ruby Tempfile, vb vardır perl tempfile vardır.
Windows için Git: .bashrc veya eşdeğer...
Log4j ile farklı içerik oluşturma bird...
Neden emacs değiştirilmiş dosyaları iç...
Bash: Ardışık dosyaları kaldırın...
İCal Dosyaları Oluşturma c#...