Bash: ความแตกต่างระหว่างตัวดำเนินการ> และ >>? [ปิด]


37

ฉันเป็นมือใหม่และไม่รู้มากเกี่ยวกับผู้สอน bash.my ขอให้ฉันทำ cat script และสังเกตการณ์ผลลัพธ์จากนั้นบอกโอเปอเรเตอร์> คืออะไรและอะไรคือความแตกต่างระหว่างโอเปอเรเตอร์> & >> และฉันไม่สามารถหาเหตุผลใด ๆ ดังนั้นโปรดช่วย :)


คุณสามารถเล่นกับไฟล์ชั่วคราวเพื่อรับความแตกต่างระหว่าง >> และ>
halp

คำตอบ:


60

เครื่องหมาย ">" ใช้สำหรับเปลี่ยนเส้นทางเอาต์พุตของโปรแกรมไปยังสิ่งอื่นที่ไม่ใช่ stdout (เอาต์พุตมาตรฐานซึ่งเป็นเทอร์มินัลโดยค่าเริ่มต้น)

>> ต่อท้ายไปยังไฟล์หรือสร้างไฟล์หากไม่มีอยู่
> เขียนทับไฟล์หากมีอยู่หรือสร้างขึ้นหากไม่มีอยู่

ไม่ว่าในกรณีใดผลลัพธ์ของโปรแกรมจะถูกเก็บไว้ในไฟล์ที่มีชื่อให้หลังจากตัวดำเนินการเปลี่ยนเส้นทาง

ตัวอย่าง:
$ ls > allmyfiles.txtสร้างไฟล์ "allmyfiles.txt" และเติมด้วยรายชื่อไดเรกทอรีจากคำสั่ง ls

$ echo "End of directory listing" >> allmyfiles.txt เพิ่ม "รายชื่อท้ายไดเรกทอรี" ที่ท้ายไฟล์ "allmyfiles.txt"

$ > newzerobytefile สร้างไฟล์ศูนย์ไบต์ใหม่ด้วยชื่อ "newzerobytefile" หรือเขียนทับไฟล์ที่มีอยู่ในชื่อเดียวกัน (ทำให้มีขนาดศูนย์ไบต์)


3
การเปลี่ยนเส้นทาง IO ยอดเยี่ยมยิ่งขึ้น: tldp.org/LDP/abs/html/io-redirection.html
Tim Bielawa

0

=> th> โอเปอเรเตอร์ใช้เพื่อเขียนทับไฟล์หากมีอยู่อย่างชาญฉลาดอื่น ๆ มันจะสร้างไฟล์ EX cat> example1 => หากไฟล์ 'example1' มีอยู่มากกว่าที่จะเขียนทับสร้างไฟล์ใหม่ => ตัวดำเนินการ >> ใช้เพื่อผนวก จุดสิ้นสุดของไฟล์ EX cat >> example1


4
นั่นเป็นข้อมูลเดียวกับ andyh_ky ที่โพสต์ก่อนหน้านี้ ไม่มีจุดในการทำซ้ำคำตอบก่อนหน้านี้ นอกจากนี้ยังไม่มีจุดในการเพิ่มความคิดเห็นที่ไร้ความหมาย
John Gardeniers

-4

ไม่สามารถค้นหาหน้าคู่มือของ bash ได้ ? เพียงพิมพ์man bashที่ command prompt


คุณสามารถลองและเพิ่มเนื้อหาที่เป็นประโยชน์ในความคิดเห็นของคุณ พวกเขาเพิ่งโพสต์บล็อกพูดคุยเกี่ยวกับคำตอบสไตล์ RTFM blog.serverfault.com/post/1306724710/rtfm บางทีคุณอาจพูดถึงว่าตัวดำเนินการ> และ >> ใช้สำหรับการเปลี่ยนเส้นทาง IO tldp.org/LDP/abs/html/io -redirection.htmlเช่นเดียวกัน <ใช้เพื่ออ่านไฟล์ลงใน stdin
Tim Bielawa

ฉันเห็นด้วยกับ @Tim ฉันชอบวิธีการ "สอนคนตกปลา" ในการเรียนรู้ ในกรณีนี้แม้ว่าและโดยเฉพาะอย่างยิ่งสำหรับการเริ่มต้นมีศูนย์บ่งชี้ว่าเปลี่ยนเส้นทางการส่งออกจะถูกจัดการโดยเปลือกของผู้ใช้
EEAA

-1 เนื่องจาก manpage ทุบตีเป็นหนึ่งในสิ่งที่ยากที่สุดในการติดตามที่ฉันต้องจัดการเป็นประจำ
Sparr

เข้ามา! นี่ไม่ใช่ RTFM! คุณสามารถไปที่ manpage ของ bash (และฉันให้ลิงค์ไปยังมัน) กด ctrl-F แล้วพิมพ์ >> สิ่งแรกที่มันแสดงคือการใช้ >> บวกคำถามนี้คือการบ้าน: เราตอบการบ้านหรือเปล่า ตอบโดย andyh_ky) หรือเราจะแสดงว่าคำตอบอยู่ที่ไหน?
adamo

การบอกให้เขามองหา "หน้าคู่มือการทุบตี" ไม่ใช่กรณีของการอ่านคู่มือ F ******? มันยังมีคู่มือคำอยู่!
Sam Cogan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.