Respostas:
Uma idéia migth ser a de canalizar a saída do tail
meio sed
e substituir a nova linha com o sino / nova linha.
Mas existe uma solução mais fácil se você usar tail
dentro de uma janela x . Lá você pode executar uma ação quando o conteúdo da janela for alterado (cintilação, campainha, o que for).
sed
idéia é brilhante, mas eu não conheço o suficiente 'sed' para fazê-lo funcionar, parece que não consigo capturar novas linhas no regexpt da maneira usual (com que estou acostumado), acho que preciso dizer ao sed não interprete o fluxo de entrada linha por linha.
sed -e $'s/$/\a/'
adiciona um $'\a'
(caractere de sino na sintaxe ksh / bash / zsh) no final de cada linha.
sed
regexpt é um pouco estranho para os meus olhos ingênuos.
$'...'
sintaxe não é universal. Por exemplo, [t] csh não suporta isso.
se você usa o GNU screen
, pode configurá-lo para "vigiar" a janela com a cauda, e ele o alertará na barra de status ou pelo sino definido pelo termcap, de que há uma nova saída nessa janela.
http://www.gnu.org/software/screen/manual/html%5Fnode/Monitor.html#Monitor
edit: bastava adicionar isso, pois você mencionou o mac os x
apenas por diversão, se você estava procurando algo em particular, pode usar o say
comando do Mac OS X para ler o arquivo que está assistindo. basta obter o logtail
comando, de:
http://www.hmug.org/pub/MacOS_X/BSD/Administration/Log/logcheck/
E use-o em um script como:
#!/bin/bash
file=$1
offset=$(basename "$1")
# while true... let this thing run until it's killed...
while true; do
output=$(/usr/local/bin/logtail $file .${offset}.offset)
if [ ! -z "$output" ]; then
# print the output and say ding
echo "$output" && say ding
# to have the file read aloud to you, uncomment the following:
say "$output"
fi
# recheck every 5 seconds
sleep 5
done
screen
shows e alertas (acho que também posso tocar a campainha) SOMENTE UMA VEZ. Não para cada novo evento que acontece (não para cada nova linha que está disponível)
beep
comando, em vez de say
.
exec
comando da tela para fazer isso também. O exemplo na página de manual é o !:sed -n s/.*Error.*/\007/p
que enviará uma campainha toda vez que "Erro" for exibido nessa janela.
Você pode usar multitail . É uma cauda aprimorada que suporta a execução de comandos na correspondência de expressões regulares.
Por exemplo, o comando a seguir reproduz um som e abre uma janela do xmessage toda vez que um pacote de origem marciana é registrado.
multitail -ex "martian source" "play beep.wav; xmessage " -i /var/log/messages
Apenas para o registro, como @Nils sugeriu que eu estou usando sed
para adicionar um bell
a cada linha.
A sed
linha fornecida por @Gilles
sed -e $'s/$/\a/'
funciona no meu mac (ativei "sino audível" e "sino visual" no meu Terminal \ preferências \ avançado).
$'...'
seqüências de escape são apenas para Bash.
Para qualquer pessoa que encontre esta página, estou usando o tcsh e isso parece funcionar:
tail -f changingfile | sed -e 's/.*/& \a/'
Não me pergunte o que significa a sintaxe sed ...
Você pode tentar o konsole
que permite alertas sobre novas atividades (ou silêncio) em qualquer guia.
konsole
que seria como screen
alertas uma vez, enquanto eu preciso receber um alerta para cada nova linha.