less
memeriksa apakah stdout
ini terminal, dan berperilaku seperti cat
ketika tidak (salinan stdin ke stdout sampai EOF).
Fitur ini memungkinkan Anda menulis skrip atau program yang selalu mengirimkan output mereka (mis. --help
Output) melalui less
sementara masih memungkinkan pengalihan mudah ke file. Akan menyebalkan jika some_command --fullhelp > help.txt
masih menunggu spasi-stdin di halaman melalui teks, atau sesuatu. Beberapa perintah (misalnya man
) memeriksa output mereka sendiri untuk memutuskan apakah akan mengirim output mereka melalui pager atau tidak. Jika Anda menjalankan man ls > ls.txt
, itu tidak pernah memanggil Anda $PAGER
.
less
Perilaku seperti kucing berguna jika Anda lupa mengeditnya dari satu-liner saat menambahkan lebih banyak tahapan ke saluran pipa.
less
perlu mengetahui dimensi terminal (ukuran layar, untuk mengetahui berapa banyak garis yang harus ditampilkan sekaligus). The ioctl(2)
menggunakan di stdout
akan kembali ENOTTY pada non-terminal, sehingga tidak dapat menghindari penanganan kasus non-terminal pula. less
sebenarnya menggunakan isatty(3)
sebelum memeriksa dimensi terminal, tetapi isatty
bekerja dengan mencoba ioctl hanya tty dan memeriksa kurangnya kesalahan.
Bahkan pager sederhana seperti more(1)
(setidaknya versi util-linux) memiliki fitur ini, karena itu mungkin perilaku waras paling sederhana untuk diterapkan pada kasus itu.
Perhatikan bahwa ketika Anda menyalurkan sesuatu ke less
(misalnya grep foo bar.txt | less
), itu memang harus terbuka /dev/tty
untuk input keyboard. (Anda dapat melihatnya melakukan ini dengan echo foo | strace less
).
bash script.sh
,bash script.sh | cat
,bash script.sh > file
, dan melihat apa output yang Anda dapatkan.