जवाबों:
फ़ाइल में आउटपुट निर्देशित करते समय >>
इसके बजाय का उपयोग करें >
:
your_command >> file_to_append_to
अगर file_to_append_to
मौजूद नहीं है, तो इसे बनाया जाएगा।
उदाहरण:
$ echo "hello" > file
$ echo "world" >> file
$ cat file
hello
world
append
एक फ़ाइल का उपयोग करने के लिए >>
echo "hello world" >> read.txt
cat read.txt
echo "hello siva" >> read.txt
cat read.txt
फिर आउटपुट होना चाहिए
hello world # from 1st echo command
hello world # from 2nd echo command
hello siva
overwrite
एक फ़ाइल का उपयोग करने के लिए >
echo "hello tom" > read.txt
cat read.txt
तो बाहर डाल है
hello tom
आप >> ऑपरेटर का उपयोग कर सकते हैं। यह कमांड से टेक्स्ट फाइल के अंत में डेटा को जोड़ देगा।
इस प्रयास को चलाने के लिए परीक्षण करें:
echo "Hi this is a test" >> textfile.txt
ऐसा एक दो बार करें और फिर चलाएं:
cat textfile.txt
आप देखेंगे कि आपके पाठ को textfile.txt फ़ाइल में कई बार जोड़ा गया है।
command >> file_to_append_to
किसी फ़ाइल में संलग्न करने के लिए उपयोग करें ।
उदाहरण के लिए echo "Hello" >> testFile.txt
चेतावनी: यदि आप केवल एक का उपयोग करते हैं तो आप >
फ़ाइल की सामग्री को अधिलेखित कर देंगे। यह सुनिश्चित करने के लिए कि ऐसा कभी नहीं होता है, आप set -o noclobber
अपने साथ जोड़ सकते हैं .bashrc
।
यह सुनिश्चित करता है कि यदि आप गलती से टाइप करते हैं command > file_to_append_to
से किसी मौजूदा फ़ाइल में करते हैं, तो यह आपको सूचित करेगा कि फ़ाइल पहले से मौजूद है। नमूना त्रुटि संदेश:file exists: testFile.txt
इस प्रकार, जब आप इसका उपयोग करते हैं तो >
यह आपको केवल एक नई फ़ाइल बनाने की अनुमति देगा, न कि किसी मौजूदा फ़ाइल को ओवरराइट करने की।
>>
किसी फ़ाइल में पाठ संलग्न करने के लिए ऑपरेटर का उपयोग करें।
विकल्प -a (--append) के साथ टी का उपयोग करने से आप एक ही बार में कई फ़ाइलों को जोड़ सकते हैं और sudo का उपयोग भी कर सकते हैं (बहुत ही उपयोगी जब संरक्षित फ़ाइलों के लिए संलग्न है )। इसके अलावा, यह दिलचस्प है यदि आपको बैश के अलावा अन्य गोले का उपयोग करने की आवश्यकता है, क्योंकि सभी गोले> और >> ऑपरेटरों का समर्थन नहीं करते हैं
echo "hello world" | sudo tee -a output.txt
इस धागे के टी के बारे में अच्छे उत्तर हैं
पूरे प्रश्न के लिए:
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
यह 720 लाइनों (30 * 24) को o.txt में जोड़ेगा और उसके बाद वर्तमान तिथि के आधार पर फ़ाइल का नाम बदलेगा।
हर घंटे क्रोन के साथ ऊपर चलाएं, या
while :
do
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
sleep 3600
done
मैं इको के बजाय प्रिंटफ का उपयोग करूंगा क्योंकि यह अधिक विश्वसनीय है और नई लाइन जैसी प्रक्रियाओं को \n
ठीक से प्रारूपित करता है।
यह उदाहरण पिछले उदाहरणों में प्रतिध्वनि के समान आउटपुट उत्पन्न करता है:
printf "hello world" >> read.txt
cat read.txt
hello world
हालाँकि अगर आप इस उदाहरण में इको के साथ प्रिंटफ़ को प्रतिस्थापित करने वाले थे, तो इको एक स्ट्रिंग के रूप में व्यवहार करेगा, इस प्रकार इरादे को अनदेखा कर सकता है
printf "hello\nworld" >> read.txt
cat read.txt
hello
world
उदाहरण के लिए आपकी फ़ाइल में निम्न शामिल हैं:
1. mangesh@001:~$ cat output.txt
1
2
EOF
अगर आप फ़ाइल के अंत में संलग्न करना चाहते हैं तो ----> 'पाठ' के बीच रिक्त स्थान याद रखें >> 'फ़ाइल का नाम'
2. mangesh@001:~$ echo somthing to append >> output.txt|cat output.txt
1
2
EOF
somthing to append
और फ़ाइल की सामग्री को अधिलेखित करने के लिए:
3. mangesh@001:~$ echo 'somthing new to write' > output.tx|cat output.tx
somthing new to write
cat
है ... बस पूरी तरह से निराला है। (यह खाली है क्योंकि आप एक फ़ाइल में मानक आउटपुट को पुनर्निर्देशित करते हैं।)
echo
स्ट्रिंग से newlines निकालता है। आप एक फ़ाइल को कैसे जोड़ सकते हैं जिसमें एक स्ट्रिंग है जिसमें नई सुर्खियाँ हैं?