touchयदि फ़ाइल मौजूद नहीं है, तो एक नई, खाली फ़ाइल बनाता है क्योंकि यही वह करने के लिए डिज़ाइन किया गया था। उपयोगिता में उस मामले को विशेष रूप से संभालने के लिए कोड शामिल होता है। यूनिक्स V7 में उपयोगिता दिखाई दी ; इसके मैनुअल ने इसे इस प्रकार वर्णित किया:
स्पर्श - अद्यतन तिथि एक फ़ाइल के अंतिम रूप से संशोधित
touchप्रत्येक फ़ाइल की संशोधित तिथि निर्धारित करने का प्रयास । यह फ़ाइल से एक चरित्र को पढ़ने और इसे वापस लिखने के द्वारा किया जाता है। यदि ** फ़ाइल मौजूद नहीं है, तो -cविकल्प के निर्दिष्ट होने तक इसे बनाने का प्रयास किया जाएगा ।
(मुझे नहीं पता कि touchफ़ाइल खाली होने पर क्या किया गया था। अंतर्निहित सिस्टम कॉल बाद में आया था।)
मुझे यकीन नहीं है कि touchफाइल को बनाने के लिए क्यों बनाया गया था, लेकिन मुझे संदेह है कि इसकी वजह है make। आप वर्तमान समय में फ़ाइल का संशोधन समय क्यों सेट करना चाहते हैं? ऐसे मामले हैं जहां एक विशेष समय के लिए संशोधन समय निर्धारित करना उपयोगी हो सकता है, लेकिन यह क्षमता बाद में आई, मूल touchकेवल वर्तमान समय में संशोधन समय निर्धारित कर सकता है। ऐसा करने का एक कारण एक makeनियम को फिर से चलाना है जो फ़ाइल पर निर्भर करता है।
यही है, मान लीजिए कि आपके पास एक फ़ाइल है foo, और एक मेकफाइल है जो से उत्पन्न करने के लिए एक कमांड की घोषणा करता barहै foo। जब आप टाइप करते हैं make bar, तो कमांड निष्पादित होती है और barबनाई जाती है। यदि barमौजूद है और नए की तुलना में है foo, make barतो कुछ भी नहीं करता है, क्योंकि माना जाता makeहै कि barपहले ही उत्पन्न हो चुका है। हालांकि, अगर barउम्र से अधिक है foo, तो सोचें कि barअप-टू-डेट नहीं है और इसे पुनर्जीवित करने की आवश्यकता है।
लेकिन क्या होगा अगर उत्पन्न करने के नियम barबदल गए हैं? फिर आपके पास दो विकल्प हैं:
rm bar; make bar
touch foo; make bar
आपको fooउत्पन्न करने के लिए मौजूद रहने की आवश्यकता होगी bar, अन्यथा कमांड आमतौर पर काम नहीं करेगा।
"टच" शब्दावली भी makeउपयोगिता में मौजूद थी : make -t barकेवल कमांड चलाने का दिखावा करेगा, अर्थात यह barवर्तमान समय के संशोधन समय को वास्तव में उत्पन्न करने के लिए कमांड को चलाने के बिना सेट करेगा bar(यदि आप सोचते हैं तो आप ऐसा करेंगे। परिवर्तन को fooप्रभावित नहीं करना चाहिए bar)। touchउपयोगिता इसलिए की एक स्टैंडअलोन संस्करण था make -tसुविधा।
touch /forcefsckकरने के लिए एक खाली फ़ाइल बनाने के लिए उपयोग करता हूं/forcefsck। फ़ाइल को स्वयं कुछ भी शामिल करने की आवश्यकता नहीं है, इसे बस मौजूद रहने की आवश्यकता है। इसके बिनाtouch, मुझे खाली फ़ाइल को उपयोग करनेviयाnanoसहेजने की आवश्यकता होगी । बहुत जल्दी उपयोग करने के लिएtouch।