Seperti yang disebutkan oleh William Pursell , less
membaca penekanan tombol pengguna dari terminal. Secara eksplisit terbuka /dev/tty
, terminal pengendali; yang memberikannya deskriptor file, terpisah dari input standar, dari mana ia dapat membaca input interaktif pengguna. Secara bersamaan dapat membaca data untuk ditampilkan dari input standar jika diperlukan. (Bisa juga menulis langsung ke terminal jika perlu.)
Anda dapat melihat ini terjadi dengan menjalankan
some_command | strace -o less.trace -e open,read,write less
Bergerak di sekitar input, keluar less
, dan melihat isi less.trace
: Anda akan melihatnya terbuka /dev/tty
, dan membaca dari kedua deskriptor file 0 dan mana yang dikembalikan ketika dibuka /dev/tty
(kemungkinan 3).
Ini adalah praktik umum untuk program yang ingin memastikan mereka membaca dan menulis ke terminal. Salah satu contohnya adalah SSH, misalnya ketika meminta kata sandi atau frasa sandi.
Seperti yang dijelaskan oleh schily , jika /dev/tty
tidak dapat dibuka, less
akan membaca dari kesalahan standarnya (file descriptor 2). less
Penggunaan /dev/tty
diperkenalkan pada versi 177, dirilis pada 2 April 1991.
Jika Anda mencoba berlari cat /dev/tty | less
, seperti yang disarankan oleh Hagen von Eitzen , less
akan berhasil membuka /dev/tty
tetapi tidak akan mendapatkan masukan dari itu sampai cat
menutupnya. Jadi Anda akan melihat layar kosong, dan tidak ada yang lain sampai Anda menekan CtrlCuntuk membunuh cat
(atau membunuhnya dengan cara lain); maka less
akan ditampilkan apa pun yang Anda ketikkan saat cat
sedang berjalan, dan memungkinkan Anda untuk mengontrolnya.
less
membaca data yang akan ditampilkan dari stdin, dan membaca perintah dari tty. Mereka adalah hal yang berbeda.