Conforme mencionado por William Pursell , lesslê as teclas digitadas pelo usuário no terminal. Ele abre explicitamente /dev/tty, o terminal de controle; que fornece um descritor de arquivo, separado da entrada padrão, do qual ele pode ler a entrada interativa do usuário. Ele pode ler dados simultaneamente para exibir sua entrada padrão, se necessário. (Ele também pode gravar diretamente no terminal, se necessário.)
Você pode ver isso acontecendo executando
some_command | strace -o less.trace -e open,read,write less
Mova-se pela entrada, saia lesse observe o conteúdo de less.trace: você a verá aberta /dev/ttye lerá o descritor de arquivo 0 e o que foi retornado quando foi aberto /dev/tty(provavelmente 3).
Essa é uma prática comum para programas que desejam garantir que estejam lendo e gravando no terminal. Um exemplo é o SSH, por exemplo , quando solicita uma senha ou frase secreta.
Conforme explicado por schily , se /dev/ttynão puder ser aberto, lessele lerá seu erro padrão (descritor de arquivo 2). lessO uso de /dev/ttyfoi introduzido na versão 177, lançada em 2 de abril de 1991.
Se você tentar executar cat /dev/tty | less, como sugerido por Hagen von Eitzen , lessserá bem-sucedido na abertura, /dev/ttymas não receberá nenhuma entrada até que a catfeche. Então você verá a tela em branco e nada mais até pressionar CtrlCpara matar cat(ou matar de outra maneira); em seguida less, mostrará o que você digitou enquanto catestava em execução e permitirá que você o controle.
lesslê os dados a serem exibidos a partir de stdin e lê comandos a partir do tty. São coisas diferentes.