यहां अधिकांश उत्तर [ 1 ] [ 2 ] [ 3 ] एकल कोण ब्रैकेट का उपयोग इस तरह से / dev / null में पुनर्निर्देशित करने के लिए करते हैं:
command > /dev/null
लेकिन / देव / अशक्त कार्यों के लिए भी अपील:
command >> /dev/null
अतिरिक्त चरित्र को छोड़कर, क्या ऐसा करने का कोई कारण नहीं है? क्या इन "अच्छे" में से कोई भी / देव / अशक्त के अंतर्निहित कार्यान्वयन के लिए है?
संपादित करें: खुला (2) मैनपेज का कहना है lseek संलग्न मोड में एक फाइल करने के लिए प्रत्येक लिखने से पहले कहा जाता है:
O_APPEND
फ़ाइल को एपेंड मोड में खोला गया है। प्रत्येक लिखने (2) से पहले, फ़ाइल ऑफसेट फ़ाइल के अंत में स्थित है, जैसे कि lseek (2) के साथ। फ़ाइल ऑफसेट का संशोधन और लेखन ऑपरेशन एक एकल परमाणु कदम के रूप में किया जाता है।
जो मुझे लगता है कि उपयोग करने के लिए एक छोटा प्रदर्शन जुर्माना हो सकता है >>
। लेकिन दूसरी ओर ट्रंकटिंग / देव / अशक्त उस दस्तावेज के अनुसार अपरिभाषित ऑपरेशन की तरह लगता है:
O_TRUNC
यदि फ़ाइल पहले से मौजूद है और एक नियमित फ़ाइल है और एक्सेस मोड लिखने की अनुमति देता है (यानी, O_RDWR या O_WRONLY है) तो इसे लंबाई में छोटा कर दिया जाएगा। 0. यदि फ़ाइल FIFO या टर्मिनल डिवाइस फ़ाइल है, तो O_TRUNC ध्वज को अनदेखा कर दिया गया है। अन्यथा, O_TRUNC का प्रभाव अनिर्दिष्ट है।
और POSIX कल्पना कहती है कि >
किसी मौजूदा फ़ाइल को छोटा कर दिया जाएगा , लेकिन O_TRUNC डिवाइस फ़ाइलों के लिए कार्यान्वयन-परिभाषित है और इस पर कोई शब्द नहीं है कि कैसे / dev / null को छोटा किया जाना चाहिए ।
तो, वास्तव में अनिर्दिष्ट है / truncating / देव / अशक्त? और क्या लेज़ेक कॉल का लेखन प्रदर्शन पर कोई प्रभाव पड़ता है?