यदि आपको कुछ अस्थायी फ़ाइलों को लिखने की ज़रूरत है जो केवल आपकी स्क्रिप्ट या एप्लिकेशन चल रही हैं, तो 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
…