less
não tem a menor idéia do que está no outro lado do canal que está alimentando dados para ele via entrada padrão, a menos que alguém complique muito o código para less
para encontrar o grupo de processos que less
está em execução e outros processos nesse grupo de processos e, em seguida, quem sabe como todos eles se encaixam (o shell conhece essas informações, mas pode não disponibilizá-las).
De algumas leituras em less(1)
, pode-se encontrar a opção -P
para personalizar o prompt
$ echo hi | less -P '?f%f:Standard input'
hi
Standard input
então, em teoria, se pudermos substituir o Standard input
bit pelo pipeline atual do shell ... vamos ver o que é set
quando less
é executado ...
$ function less { set > whatisset; command less "$@"; }
$ echo foo | less
foo
$ egrep 'echo|foo' whatisset
$
então nada é óbvio para usar em mksh
, já que echo
ou foo
(equivalente ao seu grep
) não aparecem em nenhum lugar no ambiente shell (mesma história para zsh
e oh wow faz bash
no Linux já spam o ambiente com configurações, mas novamente a mesma história). Na verdade, com zsh
, podemos usar uma função preexec
para disponibilizar a linha de comando:
$ zsh
% function preexec { shift; SHORT=$1; }
% function less { set > whatisset; command less "$@"; }
% echo foo | less
foo
% grep SHORT whatisset
SHORT='echo foo | less'
%
para que alguém possa fazer algo como
% less() { =less -P '?f%f:'${SHORT%% | less} "$@"; }
% echo hi|less
hi
echo hi