Bearbeiten:
Die Lösung gefunden: Sie müssen < /dev/null
nach dem PHP-Befehl einen Befehl ausführen:
php -r 'for ($i=0; $i<300; $i++) { print "$i\n";}' < /dev/null | less
Offenbar verhält sich PHP anders, weil es noch Eingaben von erwartet stdin
.
Mit dem < /dev/null
Sie zwingen PHP zum Nachdenken, gibt es keine weiteren Eingaben.
Edit 2 :
Wenn Sie das nicht (weiter) eingeben möchten, < /dev/null
können Sie einen Alias für php2
oder etwas erstellen :
alias php2="php < /dev/null`
Sie können dies dauerhaft machen, wenn Sie es in Ihrem hinzufügen ~/.bashrc
.
Jetzt können Sie tun:
php2 -r 'for ($i=0; $i<300; $i++) { print "$i\n";}' | less
Sie könnten sich einen Alias geben php
, aber dann haben Sie nie die Möglichkeit, etwas hineinzuleiten php
.
Sie können es natürlich auf p
(für weniger Tippen) verkürzen .
Ursprüngliche Antwort:
Der Fehler ist auch in CentOS 6.5 enthalten.
Ein neu installiertes CentOS 6.5 hat es auch (in einer VM). A ... | cat | less
funktioniert nicht.
A ... > a && cat a | less
funktioniert. Stelle dir das vor.
Cursortasten funktionieren auch nicht php --help | less
. Sie arbeiten in python --help | less
. Es muss also etwas in der ausführbaren PHP-Datei sein . Ich denke, das ist ein seit langem bestehender Fehler in PHP.
Ich habe hier einen Hinweis auf diesen Fehler gefunden .
Bis es behoben ist, müssen Sie eine Weiterleitung durchführen:
php -r 'for ($i=0; $i<300; $i++) { print "$i\n";}' > /tmp/php.txt && cat /tmp/php.txt | less