Se você navegar pela página less
man, você perceberá que less
tem um recurso INPUT PREPROCESSOR.
echo $LESSOPEN
para visualizar o local desse pré-processador e usar less
/ vim
/ cat
para exibir seu conteúdo.
Na minha máquina, esse pré-processador é /usr/bin/lesspipe.sh
e inclui o seguinte para rpms:
*.rpm) rpm -qpivl --changelog -- "$1"; handle_exit_status $?
Com efeito, less
envia a abertura do arquivo para rpm
e mostra a paginação de sua saída.
Obviamente, para aproveitar essa informação, simplesmente gere diretamente a saída de rpm:
grep "foo" < <(rpm -qpivl --changelog -- bar.rpm)
Ou em geral (graças ao OrangeDog)
grep "foo" < <(lesspipe.sh bar.rpm)
Observação: $LESSOPEN
Não simplesmente mantém o local de lesspipe.sh
- começa com |
e termina com %s
, portanto invocá-lo diretamente resultaria em erros. / p>