ความแตกต่างระหว่างls >
และls >>
คืออะไร? ฉันต้องเข้าใจสิ่งนี้สำหรับการคำนวณ GCSE ของฉัน แต่ไม่รู้ว่าอะไรแตกต่างกัน
man bash
)
ความแตกต่างระหว่างls >
และls >>
คืออะไร? ฉันต้องเข้าใจสิ่งนี้สำหรับการคำนวณ GCSE ของฉัน แต่ไม่รู้ว่าอะไรแตกต่างกัน
man bash
)
คำตอบ:
>
& >>
เป็นผู้ดำเนินการเปลี่ยนเส้นทาง พวกเขาถ่ายโอนเอาท์พุทของบางอย่างในกรณีนี้ls
ที่อื่น หากผลลัพธ์นี้ไปที่ไฟล์>
จะตัดไฟล์ - เช่นลบเนื้อหาก่อนหน้าใด ๆ ในขณะที่>>
จะผนวกข้อมูลใหม่เข้าที่ท้ายไฟล์โดยคงเนื้อหาเดิมไว้ สิ่งนี้จะทำงานกับอินพุตใดก็ได้ตัวอย่างเช่นecho
& cat
สามารถใช้วิธีนี้ได้เช่นกัน
อีกอย่างที่น่าสนใจคือ|
โอเปอเรเตอร์ซึ่งส่งผ่านข้อมูลไปยังแอปพลิเคชั่นอื่น - ดังนั้นls | cat -n
จะให้รายชื่อที่มีหมายเลขบรรทัด!
ท่อเป็นคำที่เกี่ยวข้อง
strace
ผลลัพธ์สำหรับbash -c 'echo a > blah'
: open("blah, O_WRONLY|O_CREAT|O_TRUNC, 0666)
ดังนั้น truncate จึงเป็นคำที่ถูกต้อง
>>
เพื่อเขียนไปยังไฟล์ (เช่น: บันทึก) ยังมีด้านดี เอฟเฟกต์ที่จะไม่มีตัวอักษร "Nul" ปรากฏที่จุดเริ่มต้นของไฟล์ saif หากไฟล์ถูกตัดทอนในขณะที่กระบวนการยังคงเขียนอยู่! (เช่น: ระหว่างการหมุนเวียนไฟล์บันทึก) เนื่องจาก "foo> file" ไม่ค้นหาจึงไม่สังเกตเห็นการเปลี่ยนแปลงขนาดและยังคงให้คะแนนมากกว่าจุดเริ่มต้นโฆษณาเติม OS ด้วย Nul foo >>file
แสวงหาและชี้ไปที่ตำแหน่งใหม่ (จุดเริ่มต้น)
สัญลักษณ์>
และ>>
ใช้เพื่อเปลี่ยนทิศทางเอาต์พุตไปยังไฟล์
ทั้งสองจะสร้างไฟล์หากไม่มีไฟล์ หากไฟล์มีอยู่แล้ว>
จะเขียนทับไฟล์ที่>>
จะผนวกข้อมูลไปยังไฟล์
ดังนั้นls > myfile
จะสร้างเอกสารชื่อmyfile
หากไม่มีอยู่ หากmyfile
มีอยู่แล้วและมีข้อมูลบางส่วนข้อมูลนั้นจะถูกเขียนทับด้วยข้อมูลใหม่ที่คุณส่งผ่าน
ในขณะที่ls >> myfile
จะสร้างไฟล์หากไม่มีอยู่และเขียนข้อมูลลงไป หากไฟล์นั้นมีอยู่กับข้อมูลบางส่วนข้อมูลใหม่จะถูกเพิ่มไปยังจุดสิ้นสุด
หากคุณใช้ตัวเดียว> มันจะทำการเขียนทับไฟล์ถ้ามันมีอยู่แล้ว ระวังให้มากเมื่อคุณใช้อันนี้
หากคุณใช้สอง >> มันจะต่อท้าย (หรืออีกนัยหนึ่งเริ่มเขียนที่ด้านล่างของไฟล์) หากมีอยู่แล้ว มิฉะนั้นจะสร้างไฟล์ใหม่หากไม่มีอยู่