ตั้งแต่ 530 น้อยกว่า (เปิดตัวในเดือนธันวาคม 2017) less --quit-if-one-screen
อย่าเปลี่ยนไปที่หน้าจอทางเลือกหากอ่านน้อยกว่าหนึ่งหน้าจอ ดังนั้นคุณจะไม่มีปัญหานี้หากรุ่นที่น้อยกว่าของคุณเป็นรุ่นล่าสุด
ในรุ่นก่อนหน้าน้อยกว่าจะต้องตัดสินใจว่าจะใช้หน้าจอทางเลือกเมื่อมันเริ่ม คุณไม่สามารถเลื่อนตัวเลือกนั้นไปเมื่อสิ้นสุดได้
คุณสามารถโทรได้น้อยลงปล่อยให้มันใช้หน้าจอทางเลือกและจัดเนื้อหาลงบนหน้าจอหลักหากน้อยลงโดยอัตโนมัติ อย่างไรก็ตามฉันไม่รู้วิธีตรวจสอบการเลิกจ้างอัตโนมัติ
ในทางกลับกันก็ไม่ยากที่จะเรียกว่า cat สำหรับอินพุตสั้นและน้อยกว่าสำหรับอินพุตที่ใหญ่กว่าแม้จะรักษาบัฟเฟอร์ไว้เพื่อที่คุณจะได้ไม่ต้องรอให้อินพุตทั้งหมดเริ่มมองสิ่งต่าง ๆ น้อยลง (บัฟเฟอร์อาจเป็น ใหญ่กว่าเล็กน้อย - คุณจะไม่เห็นอะไรเลยจนกว่าคุณจะมีข้อมูลอย่างน้อยหนึ่งหน้าจอ แต่ไม่มากไปกว่านั้น)
#!/bin/sh
n=3 # number of screen lines that should remain visible in addition to the content
lines=
newline='
'
case $LINES in
''|*[!0-9]*) exec less;;
esac
while [ $n -lt $LINES ] && IFS= read -r line; do
lines="$lines$newline$line"
done
if [ $n -eq $LINES ]; then
{ printf %s "$lines"; exec cat; } | exec less
else
printf %s "$lines"
fi
คุณอาจต้องการเห็นเส้นบนหน้าจอหลักขณะที่พวกเขาเข้ามาและสลับไปที่หน้าจออื่นหากเส้นที่จะทำให้เกิดการเลื่อน
#!/bin/sh
n=3 # number of screen lines that should remain visible in addition to the content
beginning=
newline='
'
# If we can't determine the terminal height, execute less directly
[ -n "$LINES" ] || LINES=$(tput lines) 2>/dev/null
case $LINES in
''|*[!0-9]*) exec less "$@";;
esac
# Read and display enough lines to fill most of the terminal
while [ $n -lt $LINES ] && IFS= read -r line; do
beginning="$beginning$newline$line"
printf '%s\n' -- "$line"
n=$((n + 1))
done
# If the input is longer, run the pager
if [ $n -eq $LINES ]; then
{ printf %s "$beginning"; exec cat; } | exec less "$@"
fi