Respostas:
Uma idéia migth ser a de canalizar a saída do tailmeio sede substituir a nova linha com o sino / nova linha.
Mas existe uma solução mais fácil se você usar taildentro 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).
sedidé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.
sedregexpt é 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 saycomando do Mac OS X para ler o arquivo que está assistindo. basta obter o logtailcomando, 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
screenshows 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)
beepcomando, em vez de say.
execcomando da tela para fazer isso também. O exemplo na página de manual é o !:sed -n s/.*Error.*/\007/pque 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 sedpara adicionar um bella cada linha.
A sedlinha 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 konsoleque permite alertas sobre novas atividades (ou silêncio) em qualquer guia.
konsoleque seria como screenalertas uma vez, enquanto eu preciso receber um alerta para cada nova linha.