When I try something like

php -i | less

Less is not responding to hotkeys, but prints them like pressing "q" results in statusline

:q

PageDown

:^[[6~

Pressing ENTER like "executes" the keycode and less perfoems the action.

Piping trivial small stuff work however...

OS: Fedora 14

link|improve this question
feedback

1 Answer

up vote 0 down vote accepted

php -i is doing something weird with stdin. Try this:

php -i </dev/null | less
link|improve this answer
Great suggestion, thanks. – SnakeSurgeon Mar 15 '11 at 6:32
Actually, it's less that does the "something weird". It changes to non-canonical mode input processing. Of course php may well be doing something as well, but this is simply a specific case of the more general don't have two programs simultaneously interacting with the terminal that employ different terminal input modes and expect things to work. – JdeBP Mar 17 '11 at 20:29
@JdeBP: less may very well be doing something weird, but this is from strace php -i without less: ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 – Dennis Williamson Mar 17 '11 at 21:00
Setting canonical mode input processing (icanon) is not "something weird". Canonical mode is the norm. Hence its name. – JdeBP Mar 18 '11 at 13:44
@JdeBP: Well, I don't know what's hidden behind the ... and perhaps the clue lies elsewhere. But why is php -i opening stdin at all? It does this same odd behavior with more (which is not a symlink or alias on my system), but, interestingly, not pg or (inconsistently) most. PHP also does this with php -r 'for ($i = 1; $i <= 100; $i++) { print "$i\n"; }' | less. AWK, Perl, Python, etc., don't exhibit this weirdness. Conclusion: PHP is broken. – Dennis Williamson Mar 18 '11 at 14:42
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.