Isso deve mostrar o arquivo uma vez por segundo:
watch -n 1 cat file
Como abro um arquivo de texto em um terminal com atualização automática instantânea toda vez que ele é alterado?
Eu olhei para vim
com :set autoread
, mas isso requer alguma entrada elementar (como um pressionamento de tecla dentro de vim
) para acionar a atualização.
Eu quero que a atualização automática seja viva-voz. Existe algum truque para fazer isso?
Estou usando o Crunchbang 11, mas estou bastante confortável com o terminal.
Eu usaria watch
como a outra resposta sugere, mas apenas para mostrar como alguém pode abordar um problema aparentemente complicado usando os blocos de construção fornecidos por um shell como o Unix; um loop while pode ser uma maneira simples de realizar o looping.
$ while [ 1 ]; do clear; date; cat <afile>; sleep 1 ;done
$ while [ 1 ]; do clear; date; cat sample.txt; sleep 1 ;done
Fri Nov 15 09:17:39 EST 2013
1
2
3
4
5
A tela é apagada e, depois de um segundo, isso é exibido:
Fri Nov 15 09:17:40 EST 2013
1
2
3
4
5
tail -f /var/log/syslog
Mostra as atualizações do syslog à medida que são adicionadas ao arquivo.
Como sugerido nos comentários, você também pode usar inotify
, embora seja um exagero. De longe, o mais simples é usar watch
. Aqui está uma maneira de fazer isso com inotify
:
Instale o pacote inotify-tools
sudo apt-get install inotify-tools
Use inotifywatch
para verificar se há alterações no seu arquivo. Execute-o em um loop e cat
o arquivo se uma alteração for detectada (é por isso que eu grep
para a string total
):
while true; do
inotifywatch -e modify -t 1 kk 2>/dev/null | grep -q total &&
echo "$(date;cat kk)";
done
watch(1)
é uma ferramenta realmente útil. [1]
Eu não recomendaria usar cat
.
Em vez disso, use head
ou tail
para saber se você precisa ver o começo ou o fim do arquivo.