GNU उपयोगिताओं के लिए, पूर्ण प्रलेखन info
पृष्ठ पर है, जहाँ आप पढ़ सकते हैं:
-f
अवहेलना करना; 'टच' के बीएसडी संस्करणों के साथ संगतता के लिए।
स्पर्श के लिए ऐतिहासिक बीएसडी मैन पेज देखें , जहां स्पर्श-f
को बाध्य करना था ।
यदि आप उन पुराने बीएसडी के स्रोत को देखते हैं utimes()
, तो कोई सिस्टम कॉल नहीं था , इसलिए touch
फ़ाइल को रीड + राइट मोड में खोलें, एक बाइट पढ़ें, वापस खोजें और इसे फिर से लिखें ताकि अंतिम पहुंच और अंतिम संशोधन समय को अपडेट कर सकें ।
जाहिर है, आपको अनुमतियाँ पढ़ने और लिखने दोनों की ज़रूरत थी ( touch
यदि access(W_OK|R_OK)
वह झूठे लौटे तो ऐसा करने की कोशिश करने से बचें )। अस्थायी रूप से अनुमतियों को 0666 में बदलकर-f
चारों ओर काम करने की कोशिश की !
0666 का मतलब है हर व्यक्ति को पढ़ने और लिखने की अनुमति। ऐसा होना ही चाहिए था, जैसा कि अन्यथा (जैसे 0600 जैसी अधिक प्रतिबंधात्मक अनुमति के साथ जो कि अभी भी स्पर्श की अनुमति देता है ), जिसका अर्थ उस छोटी खिड़की के दौरान हो सकता है, जो प्रक्रियाएं अन्यथा फ़ाइल को पढ़ने या लिखने की अनुमति देंगी , कार्यक्षमता को तोड़ना ।
हालांकि इसका मतलब यह है कि ऐसी प्रक्रियाएं जो अन्यथा फ़ाइल तक पहुंच नहीं होती हैं, अब इसे खोलने का एक छोटा अवसर है, सुरक्षा को तोड़ना ।
यह बहुत समझदार बात नहीं है। आधुनिक touch
कार्यान्वयन ऐसा नहीं करते हैं। तब से, utime()
सिस्टम कॉल को पेश किया गया है, जिससे फ़ाइलों की सामग्री (जिसका अर्थ है कि यह गैर-नियमित फ़ाइलों के साथ भी काम करता है) के साथ अलग-अलग होने के बिना संशोधन और एक्सेस समय को बदलने की अनुमति मिलती है और उसके लिए केवल लिखने की आवश्यकता होती है।
विकल्प touch
पारित होने के बाद भी GNU विफल नहीं -f
होता है, लेकिन केवल ध्वज की उपेक्षा करता है। इस प्रकार, बीएसडी के उन पुराने संस्करणों के लिए लिखी गई स्क्रिप्ट जीएनयू सिस्टम में पोर्ट होने पर विफल नहीं होती हैं। आजकल ज्यादा प्रासंगिक नहीं है।
-f
विकल्प के रूप में सिर्फ नजरअंदाज कर दिया गया है। हो सकता है कि तर्क पार्सर के माध्यम से मंगाई गई हो और यह बात है।