कमांड लाइन से एक खाली फ़ाइल कैसे बनाएं

मैं कमांड लाइन से एक खाली फ़ाइल कैसे बना सकता हूं?

का प्रयोग करें touch आदेश:

The touch utility sets the modification and access times of files to thecurrent time of day. If the file doesn't exist, it is created withdefault permissions.

उदाहरण:

touch newfile
> newfile

भी होगा बनाएँ एक खाली फ़ाइल। यदि फ़ाइल पहले से मौजूद है, तो यह होगी काट दिया (खाली) । फ़ाइल सामग्री रखने के लिए, उपयोग करें >> के रूप में संलग्न करने के लिए:

>> file

भले ही फ़ाइल मौजूद हो, सामग्री अछूती होगी ।

संपादित करें: यदि आपके पास टाइप करने के लिए कोई सामग्री नहीं है, तो यह तेज़ है:

user@host$ :> newfileuser@host$ :>> new_or_existing_file

नोट। : यहाँ आदेश है । यह संकेत का हिस्सा नहीं है ।

cat /dev/null > file1.ext 

सटीक तरीका एक और तरीका भी है

echo "" > file2.ext 

अंतर फ़ाइल 1 है । एक्सटी शून्य बाइट्स और फ़ाइल 2 होगा । एक्सटी एक बाइट होगा । आप इसे देख सकते हैं

ls -l file*.*

का उपयोग करना vim संपादक आप एक खाली फ़ाइल भी बना सकते हैं ।

vim filename

फिर बचाओ

:wq

आदेश

echo -n > file

एक खाली फ़ाइल बनाता है, यदि आपका संस्करण echo - एन स्विच का समर्थन करता है ।

या आप उपयोग कर सकते हैं printf

printf '' > file

सामान्य रूप से, कोई भी नियमित बनाना1 लिनक्स पर फ़ाइल शामिल है open(2) ,openat(2), तथा creat(2) सिस्टम कॉल (और विशेष रूप से साथ O_CREAT झंडे)। इसका मतलब है कि यदि आप किसी भी कमांड-लाइन उपयोगिता को कॉल करते हैं जो इन सिस्टम कॉल करता है, तो आप एक नई खाली फ़ाइल बना सकते हैं ।

आमतौर पर नया फ़ाइल नाम कुछ इस तरह से बनाया जाता है:

  • touch /tmp/new_file
  • : > /tmp/new_file
  • true > /tmp/new_file
  • > /tmp/new_file (केवल बैश शेल )

स्पर्श करें एक स्टैंडअलोन उपयोगिता है । इसका मूल उद्देश्य किसी फ़ाइल के एक्सेस और संशोधन समय को अपडेट करना है, हालांकि यदि फ़ाइल मौजूद नहीं है - तो इसे बनाया जाएगा । यह भी ध्यान दें कि एक फ़ाइल नाम - विशेष रूप से व्यवहार किया जाता है, इसलिए यदि आप एक फ़ाइल बनाना चाहते हैं जिसका शाब्दिक नाम है -, आपको इसे सिंगल या डबल कोट्स में संलग्न करना होगा ।

इसके विपरीत, > के लिए एक खोल पुनर्निर्देशन ऑपरेटर है स्टडआउट स्ट्रीम. द > ऑपरेटर विशेष रूप से कॉल करता है openat() सिस्टम कॉल के साथ O_WRONLY|O_CREAT|O_TRUNC झंडे। इसका मतलब है, यदि फ़ाइल नाम मौजूद नहीं है - यह बनाया जाएगा, और यदि ऐसा होता है - डेटा को छोटा कर दिया जाएगा (और इसलिए चला गया, इसलिए > देखभाल के साथ इस्तेमाल किया जाना चाहिए) । आजकल ज्यादातर गोले में true या : एक अंतर्निहित है, इसलिए कर रहा है : > /tmp/new_file अधिक कुशल होने जा रहा है, हालांकि तुलना में मामूली रूप से touch /tmp/new_file.

लेकिन बेशक यह यहीं नहीं रुकता । जैसा कि उल्लेख किया गया है, कुछ भी जो प्रदर्शन कर सकता है open(), openat() और, create() सिस्कॉल एक फाइल बनाएगा। इसलिए, हम कर सकते हैं:

  • true|dd of=/tmp/newfile
  • truncate --size 0 /tmp/new_filename.txt
  • cp /dev/null /tmp/null_file
  • true|tee /tmp/some_other_file
  • mktemp या tempfile (अस्थायी फ़ाइलें बनाने के लिए जिन्हें रिबूट के बीच मौजूद होने की आवश्यकता नहीं है !)

बेशक, उपर्युक्त सभी उपयोगिताओं विशेष रूप से फाइलें नहीं बनाती हैं । लेकिन वे आवश्यक सिस्कॉल करते हैं और यह हमें आदेशों को अनुकूलित करने की अनुमति देता है ।


बेशक, प्रोग्रामिंग या स्क्रिप्टिंग के स्तर पर हम एक फ़ाइल भी बनाना चाह सकते हैं, विशेष रूप से दक्षता उद्देश्यों के लिए (क्योंकि बाहरी आदेशों को कॉल करना जैसे touch एक पर्ल स्क्रिप्ट या पायथन से अतिरिक्त संसाधनों की आवश्यकता होगी) ।

पायथन वन-लाइनर:

$ python -c 'import sys,os;f=sys.argv[1];os.utime(f,None) if os.path.exists(f) else open(f,"a").close' myfile.txt

हम इसे इसके साथ छोटा कर सकते हैं:

$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt 

और पर्ल में:

$ perl -e 'open(my $fh,">","/tmp/perlfile")'

1 अन्य प्रकार की फाइलें जैसे हार्ड/सॉफ्ट लिंक,कैरेक्टर या ब्लॉक विशेष डिवाइस, डायरेक्टरी,नामित पाइप, या सॉकेट्स को पूरी तरह से अलग-अलग सिस्कॉल की आवश्यकता होती है ।