Pode seguir menos (pressionando F) uma entrada canalizada (semelhante a um arquivo)? Para um arquivo que está sendo gravado, o comando
less <file>
seguirá o arquivo ao pressionar F.
Mas se eu tiver um comando que canalize a saída diretamente para menos, assim
command | less
pressionar F não fará nada.
Parece que os pipes não podem ser seguidos como os arquivos? Ou talvez tenha a ver com o comando também escrevendo para STDERR? O efeito que estou tentando obter é sempre ver a saída mais recente do comando: assim como manter pressionado o PageDown!
Uma observação relacionada é válida para G (vá para o final): ao canalizar diretamente para menos, não funcionará.
Respostas:
Pressionando Fou Gmarcas
less
tentar chegar EOF entrada. Se a entrada for um tubo,less
trava até o tubo ser fechado do outro lado (e não "não faz nada").Isso pode ser contornado salvando a saída do comando em um arquivo temporário em segundo plano e usando-o como entrada para
less
:Não há opção para fazer isso
less
apenas; no entanto, admito que seria útil.fonte
less
trava até que o tubo seja fechado do outro lado . Essa é uma afirmação enganosa. O que acontece é que menos chamadas sãoread
bloqueadas, aguardando novos dados ou fechamento de canal.less
não apenas é possível ler um bloqueio, como também faz um loop aguardando EOF. E um EOF em um tubo acontece apenas se o outro lado estiver fechado.less
tela fosse atualizada nesse loop, não haveria problema. O bloqueio da leitura tem pouco a ver com esse problema.less
não poderá atualizar a tela, se não houver dados; quando alguns dados aparecerem, o bloqueio da leitura o retornará eless
seria capaz de atualizar a tela sem um thread separado.Sim, começando com a versão 474. No entanto, ainda não foi mencionado nas notas de versão de qualquer versão, pois há um problema restante com esse recurso no momento. Abaixo está um comentário do mantenedor de menos - Mark Nudelman:
Em relação ao comando F nos tubos, isso também é corrigido em menos de 474. Em vez de procurar o EOF, o comando F procura o final da entrada em buffer e começa a ler lá. No entanto, não é realmente utilizável, porque quando você pressiona CTRL-C para interromper o comando F, ele mata o processo que produz a saída. Não sei como consertar isso.
Até que esse problema seja corrigido, menos é possível solucionar o problema usando os recursos do shell. Veja minha resposta para Existe alguma maneira de sair do modo de acompanhamento "menos" sem interromper outros processos no pipe? pergunta para detalhes.
Para referência, o problema de F não funcionar com tubos tem o número de referência 300 na lista de erros conhecidos e é intitulado O comando F não funciona na entrada canalizada.
Funciona a partir da versão 466. Citando as notas de versão desta versão:
fonte
Na página de manual menos
então isso deve funcionar e realmente funciona para mim.
fonte