มันไม่มีประโยชน์อะไร - เป็นรูปแบบเฉพาะของ>โอเปอเรเตอร์การเปลี่ยนเส้นทางแบบธรรมดา(และอาจสับสนได้ไม่มีส่วนเกี่ยวข้องกับไพพ์) bashและเชลล์สมัยใหม่ส่วนใหญ่มีตัวเลือกnoclobberซึ่งป้องกันการเปลี่ยนเส้นทางจากการเขียนทับหรือทำลายไฟล์ที่มีอยู่แล้ว ตัวอย่างเช่นถ้าnoclobberเป็นจริงและไฟล์/tmp/output.txtมีอยู่แล้วสิ่งนี้ควรล้มเหลว:
$ some-command > /tmp/output.txt
อย่างไรก็ตามคุณสามารถแทนที่การตั้งค่าอย่างชัดเจนnoclobberด้วย>|โอเปอเรเตอร์การเปลี่ยนเส้นทาง - การเปลี่ยนเส้นทางจะใช้งานได้แม้ว่าnoclobberจะตั้งค่าไว้ก็ตาม
คุณสามารถดูว่าnoclobberมีการตั้งค่าในสภาพแวดล้อมปัจจุบันของคุณด้วยset -oหรือไม่
สำหรับบันทึกในอดีตตัวเลือก "noclobber" และคุณลักษณะบายพาสมาจากcsh(ช่วงปลายยุค 70) kshคัดลอก (80 ต้น) แต่นำมาใช้แทน>| >!POSIX ระบุkshไวยากรณ์ (ดังนั้น POSIX เชลล์ทั้งหมดรวมถึง bash, อนุพันธ์ Ash ที่ใหม่กว่าที่ใช้เป็น sh ในบางระบบสนับสนุน) Zsh รองรับทั้งไวยากรณ์ ฉันไม่คิดว่ามันจะถูกเพิ่มเข้าไปในตัวแปรเชลล์ Bourne ใด ๆ แต่ฉันอาจผิด
>|ที่: stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21/…