Odpowiedzi:
Idealnym pomysłem jest przepuszczenie wyjścia tailprzez sedi zastąpienie nowej linii dzwonkiem / nową linią.
Ale jest prawdopodobnie łatwiejsze rozwiązanie, jeśli używasz tailw oknie X-Window . Tam możesz wykonać akcję, gdy zmieni się zawartość okna (migotanie, dzwonek, cokolwiek).
sedpomysł jest genialny, ale nie wiem wystarczająco dużo „sed”, aby zadziałało, wygląda na to, że nie mogę przechwytywać nowych wierszy w wyrażeniu regularnym w zwykły sposób (do którego jestem przyzwyczajony). Chyba muszę powiedzieć sed nie interpretuj przychodzącego strumienia linia po linii.
sed -e $'s/$/\a/'dodaje $'\a'(znak dzwonka w składni ksh / bash / zsh) na końcu każdej linii.
sedregexpt jest trochę dziwny dla moich naiwnych oczu.
$'...'składnia nie jest uniwersalna. Na przykład [t] csh nie obsługuje tego.
jeśli korzystasz z GNU screen, możesz ustawić go tak, aby „obserwował” okno ogonem, a na pasku stanu lub za pomocą dzwonka zdefiniowanego przez termcap ostrzeże cię, że w tym oknie pojawi się nowe wyjście.
http://www.gnu.org/software/screen/manual/html%5Fnode/Monitor.html#Monitor
edycja: po prostu musiałem to dodać, ponieważ wspomniałeś o Mac OS X
dla zabawy, jeśli szukasz czegoś konkretnego, możesz użyć polecenia Mac OS X, sayaby odczytać oglądany plik. po prostu pobierz logtailpolecenie z:
http://www.hmug.org/pub/MacOS_X/BSD/Administration/Log/logcheck/
I użyj go w skrypcie, takim jak:
#!/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
screenpokazuje i ostrzega (myślę, że mogę sprawić, żeby zadzwonił również dzwonkiem) TYLKO RAZ. Nie dla każdego nowego wydarzenia, które się wydarzy (nie dla każdej nowej linii, która jest dostępna)
beeppolecenia zamiast say.
execzrobić za pomocą polecenia screen . Przykładem na stronie podręcznika jest to, !:sed -n s/.*Error.*/\007/pże wyśle dzwonek za każdym razem, gdy w tym oknie jest wyświetlany komunikat „Błąd”.
Możesz użyć multitaila . Jest to ulepszony ogon, który obsługuje wykonywanie poleceń w dopasowaniu wyrażeń regularnych.
Np. Następujące polecenie odtwarza dźwięk i otwiera okno xmessage przy każdym logowaniu pakietu źródłowego marsjańskiego .
multitail -ex "martian source" "play beep.wav; xmessage " -i /var/log/messages
Dla przypomnienia, jak sugeruje @Nils, że używam sed do dodaniabell do każdej linii.
sedLinia dostarczone przez @Gilles
sed -e $'s/$/\a/'
działa na moim komputerze Mac (w moim terminalu \ preferencje \ zaawansowane włączyłem „dźwiękowy dzwonek” i „wizualny dzwonek”).
$'...'sekwencje specjalne to tylko Bash.
Dla każdego, kto znajdzie tę stronę, używam tcsh i wygląda na to, że działa:
tail -f changingfile | sed -e 's/.*/& \a/'
Nie pytaj mnie, co oznacza składnia sed ...
Możesz wypróbować konsoleopcję, która pozwala ostrzegać o nowej aktywności (lub ciszy) w dowolnej zakładce.
konsoleże to tak screen, jakby raz to ostrzegało, a ja muszę otrzymywać ostrzeżenie dla każdej nowej linii.