यदि आपको कुछ अस्थायी फ़ाइलों को लिखने की ज़रूरत है जो केवल आपकी स्क्रिप्ट या एप्लिकेशन चल रही हैं, तो TMPDIRपर्यावरण चर द्वारा इंगित निर्देशिका का उपयोग करें , या यदि वह चर परिभाषित नहीं है, तो /tmp।
/tmpकुछ सिस्टम पर बूट समय पर साफ किया जाता है (कभी-कभी यह रैम में भी होता है, जैसे कि सोलारिस पर डिफ़ॉल्ट रूप से, और कुछ लिनक्स इंस्टॉलेशन पर), इसलिए इसका उपयोग उन फ़ाइलों के लिए नहीं किया जा सकता है, जिन्हें बिजली की विफलता या रिबूट से बचना चाहिए। /var/tmpउन फ़ाइलों के लिए उपयोग किया जा सकता है, जिन्हें रिबूट से बचना चाहिए, लेकिन समय-समय पर सिस्टम व्यवस्थापक द्वारा साफ किया जा सकता है। आपके आवेदन की जरूरत है एक स्थायी आधार पर फ़ाइलें सहेजने के लिए, उन्हें कहीं उपयोगकर्ता के घर निर्देशिका में (में लिखने ~/.programmingnoobsappया ~/.cache/programmingnoobsapp) या के तहत /var/lib/programmingnoobsappया /var/cache/programmingnoobsapp।
ध्यान दें कि /tmpसभी उपयोगकर्ताओं के बीच साझा किया जाता है, इसलिए आपको एक फ़ाइल बनाते समय सावधानी बरतने की आवश्यकता है। आपको एक फ़ाइल नाम चुनने की आवश्यकता है जो अभी तक मौजूद नहीं है, और आपको एक दौड़ की स्थिति की अनुमति नहीं देने के लिए सावधान रहने की आवश्यकता है जहां एक और प्रक्रिया आपके लिए अलग-अलग अनुमतियों के साथ फाइल बनाती है, जो एक सुरक्षा छेद हो सकती है (यदि दूसरी प्रक्रिया है) एक अलग उपयोगकर्ता के रूप में चल रहा है, यह तब आपकी प्रक्रिया के डेटा तक पहुंच और संशोधित कर सकता है)। mktempमें /tmpया फ़ाइल बनाने के लिए कमांड का उपयोग करें /var/tmp। डिफ़ॉल्ट रूप से, mktempएक फ़ाइल बनाता है $TMPDIR, या /tmpयदि TMPDIRकोई परेशान है, जो आमतौर पर सही जगह है। यदि आपको कई अस्थायी फ़ाइलों का उपयोग करने की आवश्यकता है, या यहां तक कि अगर आपको किसी एक की आवश्यकता है, तो मैं आपकी सभी अस्थायी फ़ाइलों के लिए एक निर्देशिका बनाने की सलाह देता हूंmktemp -d और इसे अपनी स्क्रिप्ट के अंत में हटा दें।
#!/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
…