Quero exibir o conteúdo de um arquivo enquanto eles mudam, por exemplo, se eu tenho o arquivo foobar
e faço:
magic_command foobar
O terminal atual deve exibir o conteúdo do arquivo e aguardar até que eu não saiba, pressione ^ C.
Então, se de outro terminal eu faço:
echo asdf >> foobar
O primeiro terminal deve exibir a linha recém-adicionada, além do conteúdo original do arquivo (é claro, já que eu não pressionei ^ C).
Vou marcar isso como lição de casa, já que quero explorar e aprender Linux, mas não é lição de casa, é apenas uma curiosidade minha.
Respostas:
Você pode usar
tail command
com-f
:É uma boa solução para o show em tempo real.
fonte
-F
(capital f), que reabrirá o arquivo se ele for removido e recriado ao longo do caminho.Se você deseja mostrar um arquivo curto, que caiba na tela de um terminal, e o que está mudando é possivelmente o arquivo inteiro, você pode usar
watch
:watch cat example.txt
Ele mostra o arquivo inteiro a cada 2 segundos por padrão, incluindo um cabeçalho opcional:
A opção
-d
(--differences
) destacará as alterações da versão anterior da saída ou da primeira versão.fonte
Quando preciso detectar alterações no arquivo e fazer algo diferente do que
tail -f filename
faz, useiinotifywait
em um script para detectar a alteração e agir de acordo com ela. Um exemplo de uso é mostrado abaixo. Vejaman inotifywait
para outros nomes de eventos e opções. Pode ser necessário instalar oinotify-tools
pacote, por exemplo, viasudo apt-get install inotify-tools
.Aqui está o script de exemplo, chamado
exec-on-change
:Em dois consoles, digitei comandos da seguinte maneira (onde A> significa entrada no console A e B> significa entrada no console B.)
A seguinte saída
cat t
apareceu no console A:A seguinte saída de
exec-on-change
apareceu no console B:O
exec-on-change
roteiro terminado quando eurm
'dt
.fonte
less
tem um modo de acompanhamento semelhante atail -f
- basta clicarF
quando o abrir.fonte
Eu tenho três soluções:
1)
tail -f
é uma boa ideia2) também temos
tailf
que usar3) o terceiro é um script bash:
fonte