Come menzionato da William Pursell , lesslegge le battute dell'utente dal terminale. Apre esplicitamente /dev/ttyil terminale di controllo; che gli fornisce un descrittore di file, separato dall'input standard, dal quale può leggere l'input interattivo dell'utente. Può leggere simultaneamente i dati da visualizzare dal suo input standard, se necessario. (Potrebbe anche scrivere direttamente sul terminale, se necessario.)
Puoi vederlo accadere correndo
some_command | strace -o less.trace -e open,read,write less
Spostati nell'input, esci lesse guarda il contenuto di less.trace: lo vedrai aperto /dev/ttye leggerai sia dal descrittore di file 0 sia da quello che è stato restituito quando è stato aperto /dev/tty(probabilmente 3).
Questa è una pratica comune per i programmi che desiderano assicurarsi di leggere e scrivere sul terminale. Un esempio è SSH, ad esempio quando richiede una password o passphrase.
Come spiegato da schily , se /dev/ttynon può essere aperto, lessleggerà dal suo errore standard (descrittore di file 2). lessL 'uso di è /dev/ttystato introdotto nella versione 177, rilasciata il 2 aprile 1991.
Se provi a correre cat /dev/tty | less, come suggerito da Hagen von Eitzen , lessriuscirà ad aprirsi /dev/ttyma non otterrà alcun input da esso fino a quando catnon lo chiude. Quindi vedrai lo schermo vuoto e nient'altro finché non premi CtrlCper uccidere cat(o ucciderlo in qualche altro modo); quindi lessmostrerà tutto ciò che hai digitato mentre catera in esecuzione e ti consentirà di controllarlo.
lesslegge i dati da visualizzare da stdin e legge i comandi da tty. Sono cose diverse.