less
ตรวจสอบว่ามันstdout
เป็นขั้วและทำงานเหมือนcat
เมื่อมันไม่ได้ (คัดลอก stdin เพื่อ stdout จนกระทั่ง EOF)
คุณลักษณะนี้ช่วยให้คุณสามารถเขียนสคริปต์หรือโปรแกรมที่ส่งเอาต์พุต (เช่น--help
เอาต์พุต) ตลอดเวลาless
ขณะที่ยังยอมให้เปลี่ยนเส้นทางไปยังไฟล์ได้ง่าย มันจะดูดถ้าsome_command --fullhelp > help.txt
ยังคงรอสเปซบาร์บน stdin เพื่อเลื่อนดูข้อความหรืออะไรซักอย่าง บางคำสั่ง (เช่นman
) ตรวจสอบว่าเอาต์พุตของตนเองเพื่อตัดสินใจว่าจะส่งเอาต์พุตผ่านเพจเจอร์หรือไม่ ถ้าคุณใช้มันไม่เคยเรียกคุณman ls > ls.txt
$PAGER
less
พฤติกรรมคล้ายแมวนั้นมีประโยชน์ถ้าคุณลืมที่จะแก้ไขมันออกมาจากสายการบินเดียวเมื่อเพิ่มขั้นตอนเพิ่มเติมลงในไปป์ไลน์ด้วย
less
จำเป็นต้องทราบขนาดเทอร์มินัล (ขนาดหน้าจอเพื่อทราบจำนวนบรรทัดที่จะแสดงพร้อมกัน) ioctl(2)
จะใช้ในการstdout
จะกลับมา ENOTTY บนไม่ใช่ขั้วดังนั้นจึงไม่สามารถหลีกเลี่ยงการจัดการกรณีที่ไม่ใช่ขั้วอยู่แล้ว less
ใช้งานจริงisatty(3)
ก่อนตรวจสอบขนาดเทอร์มินัล แต่isatty
ทำงานได้โดยลองใช้ ioctl แบบ tty-only และตรวจสอบหาข้อผิดพลาด
แม้แต่เพจเจอร์ธรรมดา ๆ อย่างmore(1)
(อย่างน้อยรุ่น util-linux) ก็มีฟีเจอร์นี้เพราะมันอาจเป็นพฤติกรรมที่มีสติที่ง่ายที่สุดในการนำไปใช้ในกรณีนั้น
โปรดทราบว่าเมื่อคุณไพพ์บางอย่างลงใน less
(เช่นgrep foo bar.txt | less
) มันจะต้องเปิดขึ้น/dev/tty
เพื่อป้อนคีย์บอร์ด (คุณสามารถดูได้ด้วยecho foo | strace less
)
bash script.sh
,bash script.sh | cat
,bash script.sh > file
และดูสิ่งที่คุณจะได้รับการส่งออก