Réponses:
Une idée pourrait être de diriger la sortie de tail
through sed
et de remplacer la nouvelle ligne par bell / newline.
Mais il y a propably une solution plus facile si vous utilisez tail
dans un x-fenêtre . Là, vous pouvez exécuter une action lorsque le contenu de la fenêtre change (scintillement, cloche, peu importe).
sed
idée est géniale mais je ne connais pas assez de «sed» pour le faire fonctionner, il semble que je ne peux pas capturer les nouvelles lignes dans le regexpt de la manière habituelle (à laquelle j'ai l'habitude), je suppose que je dois dire à sed n'interprétez pas le flux entrant ligne par ligne.
sed -e $'s/$/\a/'
ajoute un $'\a'
(caractère de cloche dans la syntaxe ksh / bash / zsh) à la fin de chaque ligne.
sed
regexpt est un peu étrange à mes yeux naïfs.
$'...'
syntaxe n'est pas universelle. Par exemple, [t] csh ne le prend pas en charge.
si vous utilisez GNU screen
, vous pouvez le configurer pour "regarder" la fenêtre avec la queue, et il vous avertira dans votre barre d'état, ou par la cloche définie de votre termcap, qu'il y a une nouvelle sortie dans cette fenêtre.
http://www.gnu.org/software/screen/manual/html%5Fnode/Monitor.html#Monitor
edit: je devais juste ajouter ceci, puisque vous avez mentionné mac os x
juste pour le plaisir, si vous cherchez quelque chose en particulier, vous pouvez utiliser la say
commande de Mac OS X pour vous lire le fichier que vous regardez. obtenez simplement la logtail
commande, depuis:
http://www.hmug.org/pub/MacOS_X/BSD/Administration/Log/logcheck/
Et utilisez-le dans un script comme:
#!/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
montre et alerte (je suppose que je peux aussi faire sonner la cloche) UNE SEULE FOIS. Pas pour chaque nouvel événement qui se produit (pas pour chaque nouvelle ligne disponible)
beep
commande à la place de say
.
exec
commande d' écran pour le faire également. L'exemple dans la page de manuel est celui !:sed -n s/.*Error.*/\007/p
qui enverra une cloche chaque fois que "Error" est affiché dans cette fenêtre.
Vous pouvez utiliser le multitail . Il s'agit d'une queue améliorée qui prend en charge l'exécution de commandes lors d'une correspondance d'expressions régulières.
Par exemple, la commande suivante émet un son et ouvre une fenêtre xmessage chaque fois qu'un paquet source martien est enregistré.
multitail -ex "martian source" "play beep.wav; xmessage " -i /var/log/messages
Juste pour mémoire, comme @Nils a suggéré que j'utilise sed
pour ajouter un bell
à chaque ligne.
La sed
ligne fournie par @Gilles
sed -e $'s/$/\a/'
fonctionne sur mon mac (j'ai activé "cloche audible" et "cloche visuelle" dans mon Terminal \ préférences \ avancées).
$'...'
séquences d'échappement sont une chose uniquement Bash.
Pour toute autre personne qui trouve cette page, j'utilise tcsh et cela semble fonctionner:
tail -f changingfile | sed -e 's/.*/& \a/'
Ne me demandez pas ce que signifie la syntaxe sed ...
Vous pouvez essayer konsole
ce qui permet d'alerter sur une nouvelle activité (ou silence) dans n'importe quel onglet donné.
konsole
cela ressemblerait screen
à une alerte une fois, alors que je dois recevoir une alerte pour chaque nouvelle ligne.