Comme mentionné par William Pursell , lesslit les frappes de l'utilisateur depuis le terminal. Il ouvre explicitement /dev/ttyle terminal de contrôle; cela lui donne un descripteur de fichier, distinct de l'entrée standard, à partir duquel il peut lire l'entrée interactive de l'utilisateur. Il peut simultanément lire des données à afficher à partir de son entrée standard si nécessaire. (Il pourrait aussi écrire directement sur le terminal si nécessaire.)
Vous pouvez voir cela arriver en exécutant
some_command | strace -o less.trace -e open,read,write less
Déplacez-vous dans l'entrée, quittez less-le et examinez le contenu de less.trace: vous verrez qu'il s'ouvre /dev/ttyet lit le descripteur de fichier 0 et celui qui a été renvoyé lors de son ouverture /dev/tty(probablement 3).
C'est une pratique courante pour les programmes qui souhaitent s'assurer qu'ils lisent et écrivent sur le terminal. SSH en est un exemple, par exemple lorsqu'il demande un mot de passe ou une phrase secrète.
Comme expliqué par schily , si /dev/ttyimpossible, lessnous lirons son erreur standard (descripteur de fichier 2). lessL'utilisation de de a /dev/ttyété introduite dans la version 177, publiée le 2 avril 1991.
Si vous essayez de courir cat /dev/tty | less, comme suggéré par Hagen von Eitzen , vous lessréussirez à ouvrir /dev/ttymais n’obtiendrez aucune information de sa part avant la catfermeture. Donc, vous verrez l'écran vide et rien d'autre jusqu'à ce que vous appuyiez sur CtrlCpour tuer cat(ou le tuer d'une autre manière); puis lessmontrera tout ce que vous avez tapé pendant que vous étiez en catcours d’exécution, et vous permettra de le contrôler.
lesslit les données à afficher à partir de stdin, et lit les commandes du tty. Ce sont des choses différentes.