Para ler e seguir um arquivo desde o início até ser interrompido:
tail -fn +1 file
Para demonstrar isso, tente isso (assumindo o Bash com o GNU Coreutils):
(while true; do printf . >> /tmp/file; sleep 1; done)&
tail -fn +1 /tmp/file # (Ctrl-C to interrupt, of course, or otherwise kill it.)
kill % # Kills the while-loop.
(Nota: O +1f
mencionado por outros é interpretado como um nome de arquivo, pelo menos no comando tail
do GNU.)
O acima funciona para um único arquivo. A concatenação de múltiplos arquivos não seria capaz de seguir todos de forma determinista, sem depender do primeiro. Para ' cat e seguir ', seguindo somente o último arquivo, pode-se usar substituição de processos . Aqui está outra demonstração:
printf file1 > /tmp/file1; printf file2 > /tmp/file2
(while true; do printf . | tee -a /tmp/file{1,2} > /dev/null; sleep 1; done)&
cat /tmp/file1 <(tail -fn +1 /tmp/file2) # (Interrupt or kill it.)
kill % # Kills the while-loop.