less
hat keinen Hinweis darauf, was sich auf der anderen Seite der Pipe befindet, über die Daten über die Standardeingabe zugeführt werden, es sei denn, jemand macht den Code für less
das Auffinden der Prozessgruppe less
und anderer Prozesse in dieser Prozessgruppe und dann sehr kompliziert Wer weiß, wie diese zusammenpassen (die Shell kennt diese Informationen, kann sie jedoch nicht zur Verfügung stellen).
Durch das Lesen in less(1)
einem kann die -P
Option zur Anpassung der Eingabeaufforderung gefunden werden
$ echo hi | less -P '?f%f:Standard input' hi Standard input
Also in der Theorie, wenn wir das Standard input
Bit durch die aktuelle Shell-Pipeline ersetzen können ... mal sehen, was set
wann less
läuft ...
$ function less { set > whatisset; command less "$@"; } $ echo foo | less foo $ egrep 'echo|foo' whatisset $
also nichts offensichtliches zu verwenden für mksh
, als echo
oder foo
(äquivalent zu Ihrem grep
) erscheinen nirgendwo in der Shell-Umgebung (gleiche Story für zsh
und oh wow macht bash
auf Linux jemals die Umgebung mit Einstellungen, aber wieder dieselbe Story). Eigentlich können zsh
wir mit einer preexec
Funktion die Befehlszeile verfügbar machen:
$ zsh % function preexec { shift; SHORT=$1; } % function less { set > whatisset; command less "$@"; } % echo foo | less foo % grep SHORT whatisset SHORT='echo foo | less' %
so könnte man sowas machen
% less() { =less -P '?f%f:'$ "$@"; } % echo hi|less hi echo hi