मैं कैसे बैश "noclobber" विकल्प को ओवरराइड कर सकता हूं?


17

bash noclobberपुनर्निर्देशन के साथ फ़ाइलों को अधिलेखित करने से रोकता है विकल्प एक। लेकिन कभी-कभी मैं वास्तव में चाहता हूं। cshएक समान विकल्प है और इसे !फ़ाइल नाम से पहले रखकर ओवर-राइड किया जा सकता है । क्या ऐसा करने का कोई तरीका है bash?

जवाबों:


19

हाँ। |पुनर्निर्देशन ऑपरेटर बनाने के लिए आवेदन करें >|। यह बैश संदर्भ मैनुअल , qv के § 3.6.2 में है

यदि पुनर्निर्देशन ऑपरेटर '>' है, और सेट बिलिन के लिए noclobber विकल्प सक्षम किया गया है, तो पुनर्निर्देशन विफल हो जाएगा यदि फ़ाइल जिसका नाम शब्द के विस्तार से परिणाम मौजूद है और एक नियमित फ़ाइल है। यदि पुनर्निर्देशन ऑपरेटर '>>' है, या पुनर्निर्देशन ऑपरेटर '>' है और noclobber विकल्प सक्षम नहीं है, तो पुनर्निर्देशन का प्रयास तब भी किया जाता है, जब फ़ाइल नाम से मौजूद है।

Noclobber विकल्प के बारे में इस ट्यूटोरियल पर जाएँ । यह मदद का हो सकता है।


3

जैसे ही आप अंदर ("धमाके") के बजाय |("पाइप") का प्रयोग करें । उदाहरण के लिए:bash!csh

echo done >| out

ध्यान दें कि आप रीडायरेक्ट करना चाहते हैं stderrके लिए stdout और ओवरराइड noclobber, न तो >|&है और न ही &>|काम करेगी; इसके बजाय लंबे फॉर्म का उपयोग करें:

cmd-with-errors done >| out 2>&1

क्या आप जानते हैं कि err &>| outकाम क्यों नहीं होता है?
सांग्युन ली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.