Hm, aparentemente less
não pode fazer isso. A parte em menos 'código-fonte que implementa o' seguinte 'parece ser:
A_F_FOREVER:
/*
* Forward forever, ignoring EOF.
*/
if (ch_getflags() & CH_HELPFILE)
break;
cmd_exec();
jump_forw();
ignore_eoi = 1;
while (!sigs)
{
make_display();
forward(1, 0, 0);
}
ignore_eoi = 0;
No que diz respeito ao meu conhecimento (limitado) de C, isso significa que se "seguir" for ativado, menos será:
- buscar o final da entrada
- leia e atualize a exibição em um loop, até que Ctrl-C seja pressionado
Se a entrada for um pipel, 1. não retornará até que o tubo sinalize EOF. Se eu usar tail -f xx|less
, o pipe nunca sinalizará EOF, portanto menos trava: - (.
No entanto, encontrei uma maneira de conseguir o que quero:
tail -f inputfile | recode latin1.. > /tmp/tmpfile
então
less +F /tmp/tmpfile
Isso funcionará, porque permite que menos + F funcionem em um arquivo real. Ainda é um pouco estranho, porque recode
aparentemente processa dados em blocos de 4096 bytes, mas funciona ...