यह बेकार नहीं है - यह सादे >पुनर्निर्देशक ऑपरेटर का एक विशेष रूप है (और, शायद भ्रमित, पाइप के साथ कुछ भी नहीं करना है)। bashऔर अधिकांश अन्य आधुनिक गोले के पास एक विकल्प है noclobber, जो पुनर्निर्देशन को पहले से मौजूद फ़ाइल को ओवरराइट करने या नष्ट करने से रोकता है। उदाहरण के लिए, यदि noclobberयह सत्य है, और फ़ाइल /tmp/output.txtपहले से मौजूद है, तो यह विफल होना चाहिए:
$ some-command > /tmp/output.txt
हालांकि, आप पुनर्निर्देशन ऑपरेटर के noclobberसाथ सेटिंग को स्पष्ट रूप से ओवरराइड कर सकते हैं >|- रीडायरेक्शन काम करेगा, भले ही noclobberवह सेट हो।
आप यह पता कर सकते हैं कि क्या noclobberआपके वर्तमान परिवेश में सेट है set -o।
ऐतिहासिक नोट के लिए, "नोकलोबार" विकल्प और इसके बाईपास फीचर्स दोनों csh(70 के दशक के अंत से ) आते हैं। kshइसे (80 के दशक की शुरुआत में) कॉपी किया >|गया, लेकिन इसके बजाय इसका उपयोग किया गया >!। POSIX ने kshसिंटैक्स निर्दिष्ट किया (इसलिए सभी POSIX गोले जिसमें बैश भी शामिल है, कुछ सिस्टम पर sh के रूप में उपयोग किए जाने वाले नए राख डेरिवेटिव)। Zsh दोनों वाक्यविन्यास का समर्थन करता है। मुझे नहीं लगता कि इसे किसी बॉर्न शैल संस्करण में जोड़ा गया था, लेकिन मैं गलत हो सकता हूं।
>|: stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21/…