जवाबों:
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
:sus
fg
संपादित करें: पोस्ट ने / यू / जी-मैन की टिप्पणियों के जवाब में सुधार किया । धन्यवाद!
/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.txt
TextEdit में, या 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.txt
Ctrl + D को दबाने के लिए समान है और आपको इसकी आवश्यकता है।
अपने प्राथमिक कार्य को छूने के मैन पेज पर फ़ाइल टाइमस्टैम्प को बदलना है।
Ofc वर्तमान टाइमस्टैम्प के साथ फ़ाइल भी बना रहा है और फिर आप फ़ाइल को संपादित कर सकते हैं।
VI टेक्स्ट एडिटर है जो ऐसा कहता है जो टेक्स्ट ओपन, सेव, एडिट फाइल आदि को एडिट करता है।
सभी यूजर और हैबिट का फ्लेवर है: टच तो vi या vi file.txt एक ही चीज को अलग-अलग कलर का है।
touch
आपकोchmod +x
संपादन के पहले, बाद में करने की अनुमति देता है , जो समझ में आता है कि क्या आप एक#!/bin/bash
शेल स्क्रिप्ट लिख रहे हैं ।