Warum führt LESSOPEN dazu, dass mein Befehl hängen bleibt?

Warum führt LESSOPEN dazu, dass mein Befehl hängen bleibt?

lessIch versuche , mithilfe der LESSOPENUmgebungsvariable eine gefilterte Version einiger Dateien einzulesen , aber egal, wie einfach mein Präprozessor ist, der Befehl bleibt hängen, bis ich ihn SIGINTmit Strg+C sende:

LESSOPEN='||cat' less foo bar

Was mache ich hier falsch? (Beachten Sie, dass ich die Eingabe nicht einfach als Pipe übergeben kann, da ich mehrere Dateien in separaten Puffern öffne.)

Antwort1

Sie haben das vergessen %s, ohne das catkein Dateiname erstellt wird und das einfach auf die Eingabe von stdin wartet:

LESSOPEN='||cat %s' less foo bar # works
LESSOPEN='||cat' less foo bar # hangs

Dermanpagesagt:

Um einen Eingabepräprozessor einzurichten, setzen Sie die Umgebungsvariable LESSOPEN auf eine Befehlszeile, die Ihren Eingabepräprozessor aufruft. Diese Befehlszeile sollte einmal die Zeichenfolge „%s“ enthalten, die durch den Dateinamen ersetzt wird, wenn der Befehl des Eingabepräprozessors aufgerufen wird.

verwandte Informationen