Geçici dosyaları işlemek için biraz daha taşınabilir bir yol kullanmaktır mktemp. Geçici dosyalar oluşturacak ve onların yollarını sizin için geri getirecektir. Örneğin:
$ mktemp
/tmp/tmp.zVNygt4o7P
$ ls /tmp/tmp.zVNygt4o7P
/tmp/tmp.zVNygt4o7P
Bir komut dosyasında oldukça kolay bir şekilde kullanabilirsiniz:
tmpfile=$(mktemp)
echo "Some temp. data..." > $tmpfile
rm $tmpfile
Kılavuz sayfasını okuyarak, seçenekleri ihtiyaçlarınıza göre ayarlayabilmelisiniz. Örneğin:
-d dosya yerine bir dizin oluşturur.
-u bir isim oluşturur, fakat hiçbir şey yaratmaz.
Kullanarak -ugeçici dizini kolayca alabilir ...
$ tmpdir=$(dirname $(mktemp -u))
Daha fazla bilgiyi mktempburada bulabilirsiniz .
Mac OS X ile ilgili düzenleme: Daha önce hiç Mac OSX sistemi kullanmadım, ancak aşağıdaki Tyilo tarafından yapılan açıklamaya göre, Macmktemp OSX'ler bir şablon (örneğin, Linux'ta isteğe bağlı bir argüman olan) sağlamanızı istiyor gibi görünüyor . Alıntı yapmak:
Şablon, örneğin "X" sayısı eklenmiş herhangi bir dosya adı olabilir /tmp/temp.XXXX. Sondaki "X'ler", geçerli işlem numarası ve / veya benzersiz bir harf kombinasyonuyla değiştirilir. Mktemp'nin döndürebileceği benzersiz dosya adlarının sayısı, sağlanan "Xs" sayısına bağlıdır; altı "X", 56800235584 (62 ** 6) olası dosya adından 1'inin seçilmesiyle sonuçlanır.
Man sayfası ayrıca, bu uygulamanın OpenBSD man sayfasından ilham aldığını da söylüyor mktemp. Bu nedenle benzer bir ayrışma OpenBSD ve FreeBSD kullanıcıları tarafından da gözlemlenebilir ( Geçmiş bölümüne bakınız).
Şimdi, muhtemelen fark ettiğiniz gibi, bu, sorunuzda aradığınız geçici dizin de dahil olmak üzere tam bir dosya yolu belirlemenizi gerektirir. Bu küçük sorun, -tanahtar kullanılarak ele alınabilir . Bu seçenek bir argüman (gerektirecek gibi görünüyor olsa da prefix), o kadar görünür mktempdayanır $TMPDIRgerektiğinde.
Sonuç olarak, yukarıdaki sonuçları kullanarak aynı sonuçları elde edebilmelisiniz ...
$ tmpdir=$(dirname $(mktemp tmp.XXXXXXXXXX -ut))
Bu çözümü kendim test edemediğim için Mac OS X kullanıcılarından gelen geri bildirimler büyük memnuniyet duyacaktır.
${TMPDIR-/tmp}Unix beğenileri üzerinde kullanın . geçici dosyalar içinTMPDIRne zaman kullanılmayacağını size söyleyen (sistem veya yönetici veya kullanıcı tarafından)/tmp.