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
।