अस्थायी फ़ाइलों को संभालने के लिए थोड़ा अधिक पोर्टेबल तरीका उपयोग करना है mktemp
। यह अस्थायी फाइलें बनाएगा और आपके लिए उनके रास्ते लौटाएगा। उदाहरण के लिए:
$ mktemp
/tmp/tmp.zVNygt4o7P
$ ls /tmp/tmp.zVNygt4o7P
/tmp/tmp.zVNygt4o7P
आप इसे स्क्रिप्ट में काफी आसानी से उपयोग कर सकते हैं:
tmpfile=$(mktemp)
echo "Some temp. data..." > $tmpfile
rm $tmpfile
मैन पेज को पढ़ना, आपको अपनी आवश्यकताओं के अनुसार विकल्प निर्धारित करने में सक्षम होना चाहिए। उदाहरण के लिए:
-d
एक फ़ाइल के बजाय एक निर्देशिका बनाता है।
-u
एक नाम उत्पन्न करता है, लेकिन कुछ भी नहीं बनाता है।
का उपयोग करके -u
आप अस्थायी निर्देशिका को आसानी से प्राप्त कर सकते हैं ...
$ tmpdir=$(dirname $(mktemp -u))
के बारे mktemp
में अधिक जानकारी यहाँ उपलब्ध है ।
मैक ओएस एक्स के बारे में संपादित करें: मैंने कभी मैक ओएसएक्स सिस्टम का उपयोग नहीं किया है, लेकिन नीचे टिलो की एक टिप्पणी के अनुसार, ऐसा लगता है कि मैक ओएसएक्स mktemp
आपको एक टेम्पलेट प्रदान करने की आवश्यकता है (जो कि लिनक्स पर एक वैकल्पिक तर्क है)। का हवाला देते हुए:
टेम्पलेट उदाहरण के लिए, इसमें "एक्स" की कुछ संख्या के साथ कोई फ़ाइल नाम हो सकता है /tmp/temp.XXXX
। अनुगामी "Xs" को वर्तमान प्रक्रिया संख्या और / या एक अद्वितीय पत्र संयोजन के साथ बदल दिया जाता है। अद्वितीय फ़ाइल नाम mktemp की वापसी कर सकते हैं प्रदान की संख्या "Xs" पर निर्भर करता है; छह "Xs" के परिणामस्वरूप 56800235584 (62 ** 6) संभव फ़ाइल नामों में से 1 का चयन किया जाएगा।
मैन पेज यह भी कहता है कि यह कार्यान्वयन OpenBSD मैन पेज के लिए प्रेरित है mktemp
। इसी तरह का एक विचलन ओपनबीडी और फ्रीबीएसडी उपयोगकर्ताओं द्वारा भी देखा जा सकता है ( इतिहास अनुभाग देखें )।
अब, जैसा कि आपने शायद देखा था, इसके लिए आपको एक पूर्ण फ़ाइल पथ निर्दिष्ट करना होगा, जिसमें आपके द्वारा खोजे जा रहे अस्थायी निर्देशिका भी शामिल है। इस छोटी सी समस्या को -t
स्विच का उपयोग करके नियंत्रित किया जा सकता है । हालांकि इस विकल्प के लिए एक तर्क ( prefix
) की आवश्यकता होती है , ऐसा प्रतीत होता है कि आवश्यक होने mktemp
पर निर्भर करता $TMPDIR
है।
सब सब में, आप का उपयोग करने के रूप में एक ही परिणाम प्राप्त करने में सक्षम होना चाहिए ...
$ tmpdir=$(dirname $(mktemp tmp.XXXXXXXXXX -ut))
मैक ओएस एक्स उपयोगकर्ताओं से किसी भी प्रतिक्रिया की बहुत सराहना की जाएगी, क्योंकि मैं खुद इस समाधान का परीक्षण करने में असमर्थ हूं।
${TMPDIR-/tmp}
यूनिक्स-पसंद पर उपयोग करें । अस्थायी फ़ाइलों केTMPDIR
लिए उपयोग नहीं करने के लिए आपको बताने के लिए (सिस्टम या व्यवस्थापक या उपयोगकर्ता द्वारा) है/tmp
।