ฉันพยายามค้นหาวิธีส่งข้อความไปยังไฟล์โดยไม่เขียนทับสิ่งที่มีอยู่แล้วโดยใช้>คำสั่งและฉันก็รู้ว่าไม่รู้ว่ามันเรียกอะไร ค้นหาลูกศรขวาหรือเครื่องหมายบั้งขวาหรือมากกว่าคำสั่งไม่แสดงอะไร ฉันเคยเรียกว่าเพียงแค่มันผ่านไป
ฉันพยายามค้นหาวิธีส่งข้อความไปยังไฟล์โดยไม่เขียนทับสิ่งที่มีอยู่แล้วโดยใช้>คำสั่งและฉันก็รู้ว่าไม่รู้ว่ามันเรียกอะไร ค้นหาลูกศรขวาหรือเครื่องหมายบั้งขวาหรือมากกว่าคำสั่งไม่แสดงอะไร ฉันเคยเรียกว่าเพียงแค่มันผ่านไป
คำตอบ:
>
ไม่ใช่คำสั่ง แต่เป็นการเปลี่ยนเส้นทางไฟล์ descriptor ซึ่งหมายความว่าเชลล์แยกวิเคราะห์การมอบหมายนี้ลบออกจากบรรทัดคำสั่งและเปลี่ยนสภาพแวดล้อมสำหรับกระบวนการใหม่ที่เริ่มต้น กระบวนการใหม่ไม่ได้สังเกตเห็นส่วนนี้ของบรรทัดคำสั่ง นั่นคือเหตุผลที่คุณสามารถใส่ได้ทุกที่: ในตอนต้น, ตอนท้ายหรือระหว่าง
มองหากระชากREDIRECTION
man bash
>>
เพื่อที่จะผนวกไปยังแฟ้มที่มีอยู่ที่คุณจำเป็นต้องใช้
>
เป็นผู้ประกอบการเปลี่ยนเส้นทาง โปรดทราบว่าการใช้>
เพื่อเปลี่ยนเส้นทางไปยังไฟล์ปกติจะเขียนทับสิ่งที่มีอยู่แล้วยกเว้นว่ามีการตั้งค่าnoclobber >>
จะต่อท้ายไฟล์
noclobber
ได้รับการตั้งค่า (ทุบตี)
noclobber
ไม่ได้เป็นเพียงแค่ความน่าเบื่อหน่าย มันเป็นส่วนหนึ่งของ POSIX
อย่างที่คนอื่น ๆ ตอบแล้ว>
ไม่ใช่คำสั่ง แต่เป็นตัวดำเนินการเปลี่ยนเส้นทาง อย่างไรก็ตามคำว่า 'โอเปอเรเตอร์การเปลี่ยนเส้นทาง' ไม่ได้อ้างถึงเฉพาะ>
แต่มีโอเปอเรเตอร์การเปลี่ยนเส้นทางที่แตกต่างกันจำนวนหนึ่ง dash
รายการหน้าคนดังต่อไปนี้เป็นผู้ประกอบการเปลี่ยนเส้นทาง:
< > >| << >> <& >& <<- <>
ฉันไม่แน่ใจว่ามีชื่อบุคคลที่ถูกต้องสำหรับแต่ละชื่อ บางทีถ้าคุณขุดคู่มือเชลล์เก่าบางเล่มคุณจะพบสิ่งที่น่าสนใจ แหล่งที่มานี้ถูกต้องหรือไม่ถูกต้องมีการตั้งชื่อบางอย่าง:
> - 'output redirection operator'
< - 'input redirection operator'
>> - 'output append operator'
แต่ยัง:
2> - 'standard error redirection operator'
อย่างไรก็ตามฉันไม่คิดว่ามันถูกต้องจริงๆเพราะ2
เป็นข้อโต้แย้งทางเทคนิคมากกว่าส่วนหนึ่งของโอเปอเรเตอร์
ข้อมูลอ้างอิงอย่างรวดเร็ว (ในกรณีที่คุณไม่รู้จักข้อใดข้อหนึ่งข้างต้น):
> - redirect output stream to a file, eg >somefile (for stdout) or 2>somefile
>| - as above but overwrite the file even if the noclobber shell option is set
>> - append output stream to file
< - redirect input stream from file, n defaults to 0 for stdin
<> - open file for reading and writing on stdin
>& - redirect output stream to another stream (eg >&1) or close with - (eg 2>&-)
<< - here document - see http://en.wikipedia.org/wiki/Here_document
<<- - here document with leading tabs removed.
ในตัวbash
คุณยังมี:
<<< - here string, a one line here file. Eg <<<"foo bar"
<<-
ลบแท็บและช่องว่างนำหน้าใช่ไหม
>
เปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ (หรืออุปกรณ์) เขียนทับสิ่งที่มีอยู่แล้วที่นั่น
>>
เปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ (หรืออุปกรณ์) ต่อท้ายสิ่งที่มีอยู่แล้วที่นั่น
<
นำข้อมูลจากไฟล์ (หรืออุปกรณ์) ไปยังโปรแกรมหรืออุปกรณ์
<<
เอกสารที่นี่
<<
เป็นเอกสารที่นี่
noclobber
มีการตั้งค่าตัวเลือกไว้>|
จะมีการแทนที่และอนุญาตให้แก้ไขไฟล์ได้