เมื่อใดที่คุณควรใช้>|
เพื่อเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์แทนที่จะเป็นเพียง>
?
คำอธิบายที่ให้ไว้เมื่อฉันแสดงนี้คือมันรับประกันว่าไฟล์เป้าหมายจะถูกตัดทอนก่อน แต่ฉันคิดว่า>
โดยนัยแล้ว
เป็น>|
ประโยชน์หรือไม่
เมื่อใดที่คุณควรใช้>|
เพื่อเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์แทนที่จะเป็นเพียง>
?
คำอธิบายที่ให้ไว้เมื่อฉันแสดงนี้คือมันรับประกันว่าไฟล์เป้าหมายจะถูกตัดทอนก่อน แต่ฉันคิดว่า>
โดยนัยแล้ว
เป็น>|
ประโยชน์หรือไม่
คำตอบ:
มันเป็นnoclobber
ตัวเลือกบายพาสอย่างชัดเจน
ด้วยวิธีนี้คุณสามารถเขียนทับไฟล์แม้จะมีการnoclobber
ตั้งค่าไว้
ดูhttp://mywiki.wooledge.org/NoClobber
จากman bash
:
หากโอเปอเรเตอร์การเปลี่ยนเส้นทางคือ> และเปิดใช้งานตัวเลือก noclobber ของ set builtin แล้วการเปลี่ยนเส้นทางจะล้มเหลวหากไฟล์ที่มีชื่อเป็นผลมาจากการขยายคำมีอยู่และเป็นไฟล์ปกติ หากโอเปอเรเตอร์การเปลี่ยนเส้นทางคือ> | หรือโอเปอเรเตอร์การเปลี่ยนเส้นทางคือ> และตัวเลือก noclobber ไปยังคำสั่ง set builtin ไม่ได้เปิดใช้งานการเปลี่ยนเส้นทางจะพยายามแม้จะมีชื่อไฟล์ด้วยคำอยู่ก็ตาม
จากman bash
:
-C If set, bash does not overwrite an existing file with
the >, >&, and <> redirection operators. This may be
overridden when creating output files by using the redi‐
rection operator >| instead of >.