Réponses:
Une idée pourrait être de diriger la sortie de tailthrough sedet de remplacer la nouvelle ligne par bell / newline.
Mais il y a propably une solution plus facile si vous utilisez taildans un x-fenêtre . Là, vous pouvez exécuter une action lorsque le contenu de la fenêtre change (scintillement, cloche, peu importe).
sedidé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.
sedregexpt 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 saycommande de Mac OS X pour vous lire le fichier que vous regardez. obtenez simplement la logtailcommande, 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
screenmontre 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)
beepcommande à la place de say.
execcommande d' écran pour le faire également. L'exemple dans la page de manuel est celui !:sed -n s/.*Error.*/\007/pqui 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 sedpour ajouter un bellà chaque ligne.
La sedligne 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 konsolece qui permet d'alerter sur une nouvelle activité (ou silence) dans n'importe quel onglet donné.
konsolecela ressemblerait screenà une alerte une fois, alors que je dois recevoir une alerte pour chaque nouvelle ligne.