Редактировать:
Нашел решение: Вам нужно сделать < /dev/null
после команды PHP:
php -r 'for ($i=0; $i<300; $i++) { print "$i\n";}' < /dev/null | less
Очевидно, PHP ведет себя по-другому, потому что все еще ожидает ввода от stdin
.
С тем, что < /dev/null
вы заставляете PHP думать, больше нет ввода.
Изменить 2 :
Если вы не хотите (продолжать) печатать, < /dev/null
вы можете создать псевдоним для php2
чего-то:
alias php2="php < /dev/null`
Вы можете сделать это постоянным, если добавите его в свой ~/.bashrc
.
Теперь вы можете сделать:
php2 -r 'for ($i=0; $i<300; $i++) { print "$i\n";}' | less
Вы можете использовать псевдоним php
для себя, но тогда у вас никогда не будет возможности что-то передать php
.
Вы можете, конечно, сократить его до p
(для меньшего набора текста).
Оригинальный ответ:
Эта ошибка также присутствует в CentOS 6.5.
У недавно установленного CentOS 6.5 это тоже есть (в ВМ). А ... | cat | less
не работает.
А ... > a && cat a | less
работает. Пойди разберись.
Клавиши курсора также не работают php --help | less
. Они работают в python --help | less
. Так что это должно быть что-то в исполняемом файле PHP . Я думаю, что это давняя ошибка в PHP.
Я нашел ссылку на эту ошибку здесь .
Пока это не исправлено, вам нужно сделать редирект:
php -r 'for ($i=0; $i<300; $i++) { print "$i\n";}' > /tmp/php.txt && cat /tmp/php.txt | less