มันไม่มีประโยชน์อะไร - เป็นรูปแบบเฉพาะของ>
โอเปอเรเตอร์การเปลี่ยนเส้นทางแบบธรรมดา(และอาจสับสนได้ไม่มีส่วนเกี่ยวข้องกับไพพ์) 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/…