Quero ler o arquivo inteiro e deixá-lo aguardando a entrada, assim como tail -f
com o arquivo completo exibido.
O tamanho deste arquivo sempre será alterado, porque é um .log
arquivo.
Como posso fazer isso, se não souber o comprimento do arquivo?
command-line
tail
malworm
fonte
fonte
less
tem a tecla "F". Útil se você precisar de interação.Respostas:
tail
permite adicionar-n
para especificar o número de linhas a serem exibidas no final, que podem ser usadas em conjunto com-f
. Se o argumento para-n
começar com+
isso for a contagem de linhas desde o início (0
e1
exibir o arquivo inteiro,2
indicando pular a primeira linha, conforme indicado por @Ben). Então faça:Se os seus arquivos de log se girado, você pode adicionar
--retry
(ou combinar-f and --retry
em-F
como @Hagen sugerido)Observe também que, em um terminal gráfico, você pode usar o mouse e PageUp/ PageDownpara voltar ao histórico (assumindo que seu buffer seja grande o suficiente), essas informações permanecerão lá mesmo se você usar Ctrl+ Cpara sair
tail
. Se você usarless
isso é muito menos conveniente e o AFAIK precisará usar o teclado para rolar e não conheço um meio de evitarless
desinicializar o termcap se você esquecer de iniciá-lo-X
.fonte
+
) seja implementada com mais eficiência.+1
por me ensinar sobre+0
. Você pode querer-F
em vez de-f
para arquivos de log rotativostail -n +1
mostra o início do arquivo para mim etail -n +2
pula uma linha. Eu acho que o número é o número da primeira linha exibida.Existe uma maneira muito melhor de conseguir isso:
Ele mostrará o arquivo inteiro, tem todo o poder
less
e aguardará novas entradas. Se você deseja parar de esperar pela entrada e ler uma parte específica, pode parar com^C
e continuar comF
.O
F
comando está sempre disponível emless
, se você decidir observar as alterações enquanto mantém um arquivo abertoless
, pressionar pressionáF
-lo-á. Obrigado a hiergiltdiestfu e curinga por apontar isso.fonte
tail
. Obrigado pela dica; Eu nunca teria pensado em usarless
para isso. Nota para outras pessoas: você também pode simplesmente executarless <file>
e digitarF
.Além da resposta / u / Anthon, você pode fazer algo como:
Essa
-0
opção de cauda é equivalente a-n 0
, o que significa: exibir 0 linhas. Mas o-f
mostrará novas linhas.Você não precisa do aparelho
{ }
. Eu os usei porque às vezes você deseja redirecionar os filedescriptors de alguma maneira. Por exemplo:Observado por Ben Milwood: você pode ter uma condição de corrida em que o arquivo cresce entre o final da
cat
operação e o início datail
operação. Mas, novamente, esse é um problema "acadêmico" para uma solução acadêmica.fonte
cat
final e otail
início, você não verá essas linhas. É improvável que seja um grande negócio, mas um motivo para preferir atail
solução pura .{ cat; tail -n +0 -f; } < file
que consertaria a corrida, porque o tail imprimirá todos os novos dados que aparecerem entrecat
a saída etail
a inicialização. Claro, isso torna ocat
redundante. O redirecionamento acontece apenas uma vez etail
stdin é o descritor de arquivo quecat
já foi lido no EOF; portanto, sua posição atual é ondecat
parou. Você pode testá-lo colocando umecho foo >> file
dentro do{}
, para criar a corrida sempre.watch
comando deve fazer isso por você.Você também pode tentar
Você terá mais opções com o
less
comando para rolar pelo seu arquivo, pois diz que é um arquivo grande.fonte
+F
opção é para