Weniger Hotkeys funktionieren nicht, stattdessen werden Tastencodes gedruckt und Aktionen ausgeführt

4

Wenn ich so etwas probiere

php -i | less

Less reagiert nicht auf Hotkeys, druckt sie aber so, als würde "q" in der Statuszeile angezeigt

:q

PageDown

:^[[6~

Drücken Sie die EINGABETASTE, um den Schlüsselcode "auszuführen" und weniger die Aktion auszuführen.

Piping trivial Kleinigkeiten funktionieren jedoch ...

Betriebssystem: Fedora 14

SnakeSurgeon
quelle

Antworten:

2

php -imacht etwas komisches mit stdin. Versuche dies:

php -i </dev/null | less
Dennis Williamson
quelle
Eigentlich ist es das less, was "etwas Seltsames" macht. Es wechselt zur Eingabeverarbeitung im nicht-kanonischen Modus. Natürlich phpkann auch etwas unternommen werden , aber dies ist einfach ein spezieller Fall, bei dem nicht zwei Programme gleichzeitig mit dem Terminal interagieren, die verschiedene Terminal-Eingabemodi verwenden und erwarten, dass die Dinge funktionieren .
JdeBP
@JdeBP: lesssehr gut sein , etwas zu tun , seltsam sein, aber das ist aus strace php -i ohne less :ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
Dennis Williamson
Das Einstellen der Eingabeverarbeitung im kanonischen Modus ( icanon) ist nicht "seltsam". Der kanonische Modus ist die Norm . Daher der Name.
JdeBP
1
@JdeBP: Nun, ich weiß nicht, was sich dahinter verbirgt ...und vielleicht liegt der Hinweis woanders. Aber warum php -iöffnet stdin überhaupt ? Es macht dasselbe seltsame Verhalten mit more(was auf meinem System kein Symlink oder Alias ​​ist), aber interessanterweise nicht pgoder (inkonsistent) most. PHP macht das auch mit php -r 'for ($i = 1; $i <= 100; $i++) { print "$i\n"; }' | less. AWK, Perl, Python usw. zeigen diese Verrücktheit nicht. Fazit: PHP ist kaputt.
Dennis Williamson