Abra um arquivo de texto em um terminal e atualize-o automaticamente sempre que for alterado

6

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.

    
por Kit 15.11.2013 / 14:18

5 respostas

17

Isso deve mostrar o arquivo uma vez por segundo:

watch -n 1 cat file
    
por 15.11.2013 / 15:07
3

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

Exemplo

$ 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
    
por 15.11.2013 / 15:19
2
tail -f /var/log/syslog

Mostra as atualizações do syslog à medida que são adicionadas ao arquivo.

    
por 18.09.2017 / 16:11
2

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 :

  1. Instale o pacote inotify-tools

    sudo apt-get install inotify-tools
    
  2. 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
    
por 15.11.2013 / 15:43
0

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.

    
por 11.04.2017 / 12:31

Tags