Odpowiedzi:
Idealnym pomysłem jest przepuszczenie wyjścia tail
przez sed
i zastąpienie nowej linii dzwonkiem / nową linią.
Ale jest prawdopodobnie łatwiejsze rozwiązanie, jeśli używasz tail
w oknie X-Window . Tam możesz wykonać akcję, gdy zmieni się zawartość okna (migotanie, dzwonek, cokolwiek).
sed
pomysł 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.
sed
regexpt 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, say
aby odczytać oglądany plik. po prostu pobierz logtail
polecenie 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
screen
pokazuje 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)
beep
polecenia zamiast say
.
exec
zrobić 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.
sed
Linia 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ć konsole
opcję, 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.