
Estou tentando ler uma versão filtrada de alguns arquivos less
usando a LESSOPEN
variável de ambiente, mas por mais simples que seja meu pré-processador, o comando trava até que eu o envie SIGINT
via Ctrl + C:
LESSOPEN='||cat' less foo bar
O que estou fazendo de errado aqui? (Observe que não posso simplesmente passar a entrada como um canal, pois estou abrindo vários arquivos em buffers separados.)
Responder1
Você esqueceu o %s
, sem o qual cat
não obteve um nome de arquivo e está simplesmente aguardando a entrada do stdin:
LESSOPEN='||cat %s' less foo bar # works
LESSOPEN='||cat' less foo bar # hangs
Opágina de manualdiz:
Para configurar um pré-processador de entrada, defina a variável de ambiente LESSOPEN como uma linha de comando que invocará seu pré-processador de entrada. Esta linha de comando deve incluir uma ocorrência da string "%s", que será substituída pelo nome do arquivo quando o comando do pré-processador de entrada for invocado.