8 votes

Comment faire pour que less or more reconnaisse les frappes de touches lors d'un piping depuis un cli php script ?

Je veux être capable d'utiliser les touches fléchées quand je pipe la sortie d'un php cli script dans less. Pour le moment, php cli fait quelque chose sur le tty qui ne peut être corrigé que lorsque vous exécutez

!stty sane

de moins en moins, ce qui est une vraie plaie !

J'ai trouvé une référence à ce problème @ http://www.php.net/manual/en/features.commandline.php#90743 mais je n'arrive pas à trouver de réponse :-)

Toute aide est appréciée, bien que ce problème se situe bien en deçà de nombreux autres problèmes ;-)

8voto

Chris Points 126

J'ai cherché un moyen de faire exactement cela. Pour l'instant, ma meilleure solution est :

php blah.php </dev/null | less

ce qui a l'effet désiré, mais qui est un casse-tête à taper. Il semble que lorsque le CLI de PHP détecte que stdin est un tty, il met ce tty en linemode.

2voto

pjeby Points 3228

Si vous ajoutez exec('stty cbreak'); à votre cli script, cela corrige cela. (Du moins, ça le fait pour moi, en modifiant drush.php pour cela).

0voto

Scott Buchanan Points 945

Une autre option qui est légèrement plus lisible (pour moi) est :

less -f <(php whatevz.php)

C'est également utile lorsque vous essayez de canaliser la sortie de l'indicateur info de PHP :

less -f <(php -i)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X