Vraag Waarom hebben toetsaanslagen in "minder" / "meer" soms een nodig, wanneer ik een pijp gebruik?


Ik hou van de pijp om lange tekstuitvoer te voeden less (of more) om het leesbaarder te maken. Het is alleen op Ubuntu dat ik een ongewoon gedrag heb waargenomen: soms worden minder toetsaanslagen niet onmiddellijk verwerkt. Het is alsof ik ze moet "bevestigen" <ENTER>. Er wordt bijvoorbeeld minder geopend, tekst wordt weergegeven, ik raak <SPACE> (er gebeurt niets), ik raakte <ENTER> (pagina scrollt nu naar beneden). Dit is erg vervelend, omdat het minder praktisch onbruikbaar wordt omdat het ook de terminal-output verprutst.

Het gebeurt niet voor alle piped-commando's. Een voorbeeld is:

php --rc PDO | less

Ik heb dit nog nooit gezien op een andere Linux-distributie.


2
2017-07-24 15:25


oorsprong




antwoorden:


Ik heb de hele middag met dit probleem gevochten en, na het vinden van deze vraag en het lezen van verschillende manpagina's, een beetje een hersengolf gehad. Het blijkt dat STDIN wordt omgeleid naar /dev/null fungeert als een tijdelijke oplossing en retourneert de "normale" functionaliteit naar less:

php --rc PDO < /dev/null | less

of

cat /dev/null | php --rc PDO | less

Het is natuurlijk een vreselijke oplossing voor een oplossing, en ik heb bijna geen kennis van pijpen en stroomomleiding in Bash om echt te begrijpen wat het probleem veroorzaakt of waarom dit is opgelost, maar ik dacht dat het plaatsen van dit beter was dan het onbeantwoord laten van deze vraag. Hopelijk kan iemand die meer weet dan ikzelf hier enig licht op werpen - idealiter met een meer realistische oplossing.

Mijn enige gok is dat php ontvangt STDIN in plaats van less wanneer je commando's invoert in less, maar ik ben verbijsterd waarom dit gedrag alleen in Ubuntu te zien is (dat heb ik bevestigd php --rc PDO | less werkt prima in Sabayon, CentOS en Debian, terwijl het breekt op verschillende Ubuntu-installaties, inclusief die welke zijn bijgewerkt naar 11.10).

Bijwerken om enkele relevante zoekresultaten op te nemen die ik heb gevonden. Blijkt dat het een probleem is met de bouw van Ubuntu php-cli, dus het zou geen invloed moeten hebben op andere commando's.


3
2017-11-02 16:08



Hier alleen geregistreerd om dank u te zeggen! Ik had problemen met less zich misdragen tijdens het ontvangen van gegevens op een pijp; maar werkt prima als ik de uitvoer in plaats daarvan naar een bestand heb gedumpt en vervolgens heb uitgevoerd less ben ermee bezig. wordt omgeleid STDIN naar /dev/null zoals je zei loste het probleem voor mij op en nu kan ik weer vrolijk pijpen :) - zenzelezz