Liest, wie von William Pursell erwähnt , less
die Tastatureingaben des Benutzers vom Terminal. Es öffnet sich explizit /dev/tty
das 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 less
und sehen Sie sich den Inhalt von less.trace
: an. Sie sehen, dass sie geöffnet /dev/tty
ist 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/tty
less
less
/dev/tty
Wenn Sie versuchen , laufen cat /dev/tty | less
, wie vorgeschlagen von Hagen von Eitzen , less
wird in der Öffnung gelingt /dev/tty
aber nicht jede Eingabe von ihr bis bekommen cat
schließ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 less
wird angezeigt, was Sie während cat
der Ausführung eingegeben haben , und Sie können es steuern.
less
Liest die anzuzeigenden Daten von stdin und liest Befehle vom tty. Sie sind verschiedene Dinge.