जवाबों:
touchफ़ाइल पहले आईएनजी पुष्टि करता है कि आपके पास वास्तव में फ़ाइल बनाने की क्षमता है, बल्कि संपादक में समय बर्बाद करने के बजाय केवल यह पता लगाने के लिए कि फाइलसिस्टम केवल-पढ़ने के लिए है या कुछ अन्य समस्या है।
:wशुरू करने के बाद पहली बात कर सकते हैं vi। (और :chmod +x %यदि आप इसे निष्पादन योग्य बनाना चाहते हैं)
touchविफल हो सकता है, जहां viकी :w!, हालांकि सफल रहा है | (उदाहरण के लिए अगर fileमौजूद है, लेकिन आप अपने मालिक नहीं कर रहे हैं और यह लिखने की पहुंच नहीं है, जबकि आप वर्तमान निर्देशिका की पहुंच है)। इसके विपरीत, touchसफल हो सकते हैं, लेकिन viकी :wया :w!विफल हो सकता है यदि आप फ़ाइल के स्वामी हैं, लेकिन यह करने के लिए लिखने के लिए पहुँच नहीं है और न ही वर्तमान निर्देशिका के लिए (आप के साथ चारों ओर काम करने में सक्षम हो जाएगा :!chmod +w %(कुछ viतरह कार्यान्वयन vimकर सकते हैं वह अपने आप :w!))।
"foo" [readonly]। और फिर से इन्सर्ट मोड Warning: Changing a readonly file.
दिए गए उत्तरों के अलावा, स्पर्श का एक फायदा यह है कि किसी भी अन्य उपयोगकर्ता / टर्मिनल को उसी फ़ाइल को संपादित करते समय जब आप उसे छूते हैं, तो उन्हें चेतावनी मिलेगी जब वे किसी भी परिवर्तन को सहेजने का प्रयास करेंगे।
WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?
यह उन्हें सचेत करेगा भले ही आपने प्रति सेगमेंट में कोई बदलाव न किया हो और केवल फ़ाइल को छुआ हो।
स्वीकृत उत्तर के अलावा:
यह ध्यान देने योग्य है कि touchफ़ाइल टाइमस्टैम्प को अपडेट करने के लिए उपयोग किया जाता है। यदि आप touchमौजूद फ़ाइल पर उपयोग करते हैं, तो यह वर्तमान समय और समय के लिए फ़ाइलों को टाइमस्टैम्प को अपडेट करेगा। यदि फ़ाइल मौजूद नहीं है, तो यह टाइमस्टैम्प के रूप में वर्तमान दिनांक और समय के साथ एक खाली फ़ाइल बनाता है।
viदूसरी ओर, जब तक आप इसे नहीं लिखते हैं तब तक एक नई फ़ाइल नहीं बनाते हैं।
उदाहरण के लिए, अगर मैंने टाइप किया vi test.txt, तो कुछ नोट्स टाइप किए, फिर टाइप किया :q!; test.txtमौजूद नहीं होगा।
इसके बिना touch, कोई नई फ़ाइल तब तक मौजूद नहीं होगी जब तक आप viइसे लिखना नहीं चाहते।
एक बहु-उपयोगकर्ता प्रणाली पर विचार करें (शायद आप एक नेटवर्क-माउंटेड फाइल सिस्टम पर हैं जो कई उपयोगकर्ताओं के साथ प्रत्येक सिस्टम द्वारा साझा किया गया है)। रनिंग touchसे यह सुनिश्चित होगा कि आपके पास फ़ाइल (और यह कि आप इसे लिख सकते हैं) और यहां तक कि टाइमस्टैम्प को अपडेट भी कर सकते हैं। ऐसी फाइल बनाने के इच्छुक एक अन्य उपयोगकर्ता यह देखेगा कि आप उसके मालिक हैं। यदि यह पहले से मौजूद है और कोई अन्य उपयोगकर्ता इसे हटाना या बदलना चाहता है, तो वे देखेंगे कि यह हाल ही में संशोधित किया गया था और शायद दो बार लगता है।
touchपहले निगलना कोई लाभ नहीं है ; viअगर यह मौजूद नहीं है तो फाइल बनाएंगे।
स्वीकृत उत्तर कहता है कि यह जाँच करता है कि क्या आप एक संपादक में समय बर्बाद करने से पहले लिख सकते हैं। सही है, लेकिन अब आप touchहर बार टाइपिंग में समय बर्बाद करेंगे । कहीं लिखने में सक्षम नहीं होने की तुलना में यह बहुत असाधारण है कि यह कितनी बार काम करेगा (जब तक आप sudoअपने घर की निर्देशिका के बाहर की फ़ाइलों के लिए याद करते हैं /tmp, या रूट के रूप में लॉग इन होते हैं)।
बस संपादक खोलें और जो आप चाहते हैं वह करें, फिर फ़ाइल को सहेजने का प्रयास करें। अगर यह काम नहीं करता है, तो भी :w!, इसे कहीं और बचाएं ( :w ~/asdf) और समस्या को ठीक करें। एक बार यह तय हो जाने पर, आप फ़ाइल सामग्री को अस्थायी फ़ाइल से मूल में कॉपी कर सकते हैं cat ~/asdf > /mnt/example.txt && rm ~/asdf:। हम catइसके बजाय इसका उपयोग करते हैं mvया cpगंतव्य की अनुमति और अन्य विशेषताओं का उपयोग करते हैं।
इसके अलावा, कुछ और उन्नत कमांड लाइन उपयोग के लिए, आप समस्या को हल करने (या उपयोग , या ) को ठीक करने के दौरान + के viसाथ पृष्ठभूमि कर सकते हैं , और अंत में फिर से लिखने की कमांड को चला सकते हैं।CtrlZ:suspend:susfg
संपादित करें: पोस्ट ने / यू / जी-मैन की टिप्पणियों के जवाब में सुधार किया । धन्यवाद!
/mnt/example.txtदुनिया पठनीय होना चाहिए नहीं है, लेकिन अपने umask कुछ 22 की तरह अनुमोदक के लिए सेट है, तो /tmp/asdf होगा विश्व को पढ़ा जा सके। यदि सिस्टम पर अन्य लोग हैं, तो वे फ़ाइल की अस्थायी प्रतिलिपि पढ़ने में सक्षम हो सकते हैं। (2) फ़ाइल /mnt/example.txtको शायद विश्व-योग्य नहीं माना जाता है, लेकिन, अगर सिस्टम पर दुर्भावनापूर्ण लोग हैं, तो वे फ़ाइल की अस्थायी प्रतिलिपि को पढ़ने में सक्षम हो सकते हैं और आपके द्वारा स्थानांतरित / कॉपी करने से पहले इसे संशोधित संस्करण से बदल सकते हैं। यह वापस सही स्थान पर है। … (Cont'd)
/tmpइस पर रोक लगाई जा सकती है।) (3) कमांड mv /tmp/asdf /mnt/example.txtपूरी तरह से करंट को नष्ट कर देगी /mnt/example.txtऔर इसे बदल देगी /tmp/asdf। आप बदलना चाहते हैं सामग्री के /mnt/example.txtसाथ सामग्री की /tmp/asdf। का उपयोग करके mv, आप /mnt/example.txtएक ही गुण के रूप में स्थापित करते हैं /tmp/asdf- शायद आपके और विश्व-पठनीय के स्वामित्व में। यह cp /tmp/asdf /mnt/example.txtया भी बेहतर हो सकता है cat /tmp/asdf > /mnt/example.txt। … PS (4) आप viटाइप करके निलंबित कर सकते हैं :suspend(या :sus, संक्षेप में)।
/tmp, लेकिन ~/इसके बजाय लिखने के लिए कोई बहाना नहीं है । मैंने यह भी नहीं सोचा था कि यह विशेषताओं को बदल देगा। मैं अपनी पोस्ट संपादित करूंगा, धन्यवाद :)
vi एक दृश्य पाठ संपादक है (vi = दृश्य) यह वैसे भी "एड" की तुलना में दृश्य है, जो आपको केवल एक समय में पाठ की एक पंक्ति को देखने और बदलने देता है।
यदि touchमौजूदा फ़ाइल पहले से मौजूद नहीं थी, तो कमांड किसी मौजूदा फ़ाइल पर टाइमस्टैम्प को अपडेट करती है, या एक नई फ़ाइल बनाती है। यह उन चीजों के परीक्षण के लिए अच्छा है जो टाइमस्टैम्प पर अत्यधिक निर्भर हैं।
अब यदि आपकी फ़ाइल एक पाठ फ़ाइल है, या अभी तक मौजूद नहीं है, तो इसे vi के साथ खोलना, फिर vi को कमांड जारी :wqकरना, उस फ़ाइल को छूने के समान परिणाम होगा। यही एकमात्र तरीका है कि दोनों कमांड समान हैं।
विशेष रूप से साथ प्रयोग के लिए vi, वहाँ फ़ाइल बनाने के लिए इससे पहले कि आप इसे संपादित कोई जरूरत नहीं है: viएक नई फ़ाइल बना सकते हैं और बचाने के लिए इस्तेमाल किया जा सकता। हालाँकि, वहाँ कॉलिंग संदर्भ हैं जहाँ फ़ाइल को मौजूद होना चाहिए। उदाहरण के लिए, मेरे सिस्टम (OS X) पर मैं इस तरह से एक उपयुक्त GUI संपादक (फ़ाइल प्रकार द्वारा निर्धारित) लॉन्च कर सकता हूं:
open foo.txt
यह foo.txtTextEdit में, या emacs में, या जो कुछ भी मैंने पाठ फ़ाइलों के लिए मेरी पसंद के संपादक के रूप में निर्दिष्ट किया है, खोल देगा और इस प्रक्रिया को अलग कर देगा ताकि मुझे अपना संकेत तुरंत वापस मिल जाए। ( open bar.pyयह आईडीएल में खुल सकता है, अजगर संपादक; आदि) या मैं स्पष्ट रूप से emacs का अनुरोध कर सकता हूं:
open -a emacs foo.txt
लेकिन openफ़ाइल को पहले से मौजूद होने की आवश्यकता है, अन्यथा यह एक त्रुटि उठाता है। इसलिए मुझे emacsनिम्नलिखित शेल फ़ंक्शन को परिभाषित करना पड़ा , जो मुझे GUI emacs fooलॉन्च करने के लिए लिखने की अनुमति देता है, emacsभले ही fooवह मौजूद न हो।
function emacs ()
{
if [ -n "$1" -a ! -e "$1" ]; then
/usr/bin/touch "$1";
fi;
open -a emacs "$@"
}
vi का उपयोग किसी फ़ाइल को उपयोगकर्ता के रूप में संपादित करने के लिए किया जाता है, जबकि स्पर्श उस पर टाइमस्टैम्प सेट कर सकता है और अधिकतर लिपियों और इस तरह से उपयोग किया जाता है।
फ़ाइल बनाने का दूसरा तरीका है:
>newfile.txt
zsh, यह cat >newfile.txtCtrl + D को दबाने के लिए समान है और आपको इसकी आवश्यकता है।
अपने प्राथमिक कार्य को छूने के मैन पेज पर फ़ाइल टाइमस्टैम्प को बदलना है।
Ofc वर्तमान टाइमस्टैम्प के साथ फ़ाइल भी बना रहा है और फिर आप फ़ाइल को संपादित कर सकते हैं।
VI टेक्स्ट एडिटर है जो ऐसा कहता है जो टेक्स्ट ओपन, सेव, एडिट फाइल आदि को एडिट करता है।
सभी यूजर और हैबिट का फ्लेवर है: टच तो vi या vi file.txt एक ही चीज को अलग-अलग कलर का है।
touchआपकोchmod +xसंपादन के पहले, बाद में करने की अनुमति देता है , जो समझ में आता है कि क्या आप एक#!/bin/bashशेल स्क्रिप्ट लिख रहे हैं ।