Liest, wie von William Pursell erwähnt , lessdie Tastatureingaben des Benutzers vom Terminal. Es öffnet sich explizit /dev/ttydas steuernde Terminal; Das gibt ihm einen von der Standardeingabe getrennten Dateideskriptor, aus dem er die interaktiven Eingaben des Benutzers lesen kann. Es kann bei Bedarf gleichzeitig Daten von seiner Standardeingabe lesen, um sie anzuzeigen. (Es könnte auch schreiben direkt an das Endgerät , falls erforderlich.)
Sie können dies durch Laufen sehen
some_command | strace -o less.trace -e open,read,write less
Bewegen Sie sich durch die Eingabe, beenden Sie sie lessund sehen Sie sich den Inhalt von less.trace: an. Sie sehen, dass sie geöffnet /dev/ttyist und lesen sowohl den Dateideskriptor 0 als auch denjenigen, der beim Öffnen zurückgegeben wurde /dev/tty(wahrscheinlich 3).
Dies ist gängige Praxis für Programme, die sicherstellen möchten, dass sie vom Terminal lesen und auf das Terminal schreiben. Ein Beispiel dafür ist SSH, zB wenn es nach einem Passwort oder Passwort fragt.
Wie von schily erklärt, wird , wenn es nicht geöffnet werden kann, von seinem Standardfehler gelesen (Dateideskriptor 2). Die Verwendung von wurde in Version 177 eingeführt, die am 2. April 1991 veröffentlicht wurde./dev/ttylessless/dev/tty
Wenn Sie versuchen , laufen cat /dev/tty | less, wie vorgeschlagen von Hagen von Eitzen , lesswird in der Öffnung gelingt /dev/ttyaber nicht jede Eingabe von ihr bis bekommen catschließt es. Sie sehen also den Bildschirm leer und nichts anderes, bis Sie drücken CtrlC, um zu töten cat(oder auf andere Weise zu töten ); Anschließend lesswird angezeigt, was Sie während catder Ausführung eingegeben haben , und Sie können es steuern.
lessLiest die anzuzeigenden Daten von stdin und liest Befehle vom tty. Sie sind verschiedene Dinge.