2011-01-13 16 views
127
echo "text" >> 'Users/Name/Desktop/TheAccount.txt' 

मैं इसे कैसे बना सकता हूं ताकि यह अस्तित्व में न हो, तो यह फ़ाइल बनाता है, लेकिन अगर यह पहले से मौजूद है तो इसे ओवरराइट करता है। अभी यह स्क्रिप्ट बस संलग्न है।फ़ाइल में लिखें, लेकिन अगर यह मौजूद है तो इसे ओवरराइट करें

+0

अच्छी तरह से .. यह कमाल है। मैंने स्वीकार किया> >> से थोड़ा पहले >>। – Jokester

उत्तर

242

* निक्स पाइप काम कैसे करेगा, इसकी एक छोटी सी समझ में मदद मिलेगी।

संक्षेप में >> रीडायरेक्शन ऑपरेटर निर्दिष्ट फ़ाइल के अंत तक लाइनों को जोड़ देगा, जहां > से अधिक एकल फ़ाइल खाली हो जाएगा और ओवरराइट करेगा।

echo "text" > 'Users/Name/Desktop/TheAccount.txt' 
+2

कुछ वातावरण '-bash: TheAccount.txt जैसे कुछ के साथ अस्वीकार करते हैं: मौजूदा फ़ाइल को ओवरराइट नहीं कर सकते हैं'। –

+7

इसके अलावा, '>' और '>>' * आउटपुट रीडायरेक्शन * ऑपरेटर हैं। पाइप ऑपरेटर '|' है। –

+0

@BrDaHa द्वारा उत्तर देखें।मौजूदा – Jake

27
NylonSmile's answer बावजूद

, जो सही .. मैं करने में असमर्थ फ़ाइलों के ऊपर लिख, इस तरह से था "की तरह" है ..

echo "i know about Pipes, girlfriend" > thatAnswer

zsh: file exists: thatAnswer

मेरे मुद्दों को हल करने के लिए

.. मुझे उपयोग करना था ... >!, आ ला ..

[[ $FORCE_IT == 'YES' ]] && echo "[email protected]" >! "$X" || echo "[email protected]" > "$X" 

जाहिर है, इस के साथ सावधान रहना ...

+22

को ओवरराइट करने के लिए '> |' का उपयोग करें इसका मतलब है कि आपके पास गैर-डिफ़ॉल्ट zsh विकल्प 'NOCLOBBER' सेट है। डिफ़ॉल्ट व्यवहार को पुनर्स्थापित करने के लिए 'setopt clobber' का उपयोग करें। –

2
#!/bin/bash 

cat <<EOF > SampleFile 

Put Some text here 
Put some text here 
Put some text here 

EOF 
1

आप आउटपुट त्रुटियों हो सकता है है, तो आप एक ampersand उपयोग कर सकते हैं और निम्नानुसार है:

my_task &> 'Users/Name/Desktop/task_output.log' यह लॉग फ़ाइल में केवल stderr और stdout दोनों को रीडायरेक्ट करेगा (केवल stdout के बजाय)।

+4

यह सच हो सकता है, लेकिन सवाल से असंबंधित है। – Deiwin

34

बैश में, आप एक ला set -o noclobber noclobber सेट किया है, तो आप वाक्य रचना >|

उदाहरण के लिए उपयोग करें:

echo "some text" >| existing_file

यह भी अगर फाइल अभी मौजूद नहीं है

काम करता है
  • चेक noclobber साथ सेट किया गया है: set -o | grep noclobber

  • ऑपरेटर के इस विशेष प्रकार पर एक अधिक विस्तृत विवरण के लिए, this post

  • देख पुनर्निर्देशन ऑपरेटरों का एक और अधिक व्यापक सूची के लिए, this post

को देखें
+0

धन्यवाद, zsh के लिए भी काम करता है। –

संबंधित मुद्दे