`นักเทียบท่าบันทึก foo | less` ไม่สามารถค้นหาหรือเลื่อนได้ แต่ `loger log foo 2> & 1 | less` คือ


10

การใช้ข้อความใดข้อความหนึ่งให้อ่านได้ แต่เฉพาะกับการเปลี่ยนเส้นทาง stderr สามารถหนึ่งเลื่อนหรือพิมพ์ / somepattern และได้รับการแข่งขัน

หากไม่มีการค้นหาจะให้ "ไม่มีอะไรให้ค้นหา (กด RETURN)" และคอลัมน์ของ ~

ให้ stderr และ stdout ไม่เหมือนกัน แต่ทำไมแสดงน้อยกว่าพวกเขาเหมือนกันจนกว่าฉันจะเริ่มทำอะไรน้อย

นี่อาจเป็นสิ่งที่หลายหน้าต่างแปลก ๆ ที่ฉันไม่เข้าใจ คิด?

คำตอบ:


7
+--------------------+        +------+       +----------+
|             stdout |·······→| less |——————→|          |
| somecommand        |        +------+       | terminal |
|             stderr |——————————————————————→|          |
+--------------------+                       +----------+

ถ้าsomecommandพิมพ์ข้อความข้อผิดพลาดมาตรฐานเดียวแล้วเมื่อคุณเรียกใช้somecommand | less, somecommandและlessมีทั้งการแสดงไปยังสถานี เอาต์พุตของคำสั่งบน stderr จะไม่ไปยังlessจะไปที่เทอร์มินัลโดยตรงเนื่องจากไม่ได้เปลี่ยนเส้นทาง ก่อนการส่งออกของการsomecommandเลื่อนโดยในขณะที่เริ่มต้นน้อยและแสดงให้เห็นบรรทัดของมัน จากนั้นเมื่อsomecommandเสร็จสิ้นการแจ้งให้ทราบน้อยว่าอินพุตเสร็จสมบูรณ์ (เนื่องจากปิดท่อ) คุณอาจต้องการทดลองใช้บิต: เรียกใช้

{ sleep 1; somecommand; sleep 1; } | { sleep 0; less; }

และความแปรผันของเวลาพักเครื่องเพื่อให้ได้somecommandผลผลิตก่อนหรือหลังน้อยพร้อมและดูว่าจะเกิดอะไรขึ้นเมื่อปิดท่อ

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