Jawaban:
Gagasan untuk mengirim output tail
melalui sed
dan mengganti baris baru dengan bel / baris baru.
Tetapi ada kemungkinan solusi yang lebih mudah jika Anda menggunakan di tail
dalam x-window . Di sana Anda dapat melakukan suatu tindakan ketika konten jendela berubah (flicker, bell, apa pun).
sed
Ide ini brilian tetapi saya tidak tahu 'sed' cukup untuk membuatnya bekerja, sepertinya saya tidak bisa menangkap baris baru di regexpt dengan cara biasa (yang saya sudah terbiasa), saya kira saya perlu memberi tahu sed jangan menginterpretasikan aliran stream yang masuk per baris.
sed -e $'s/$/\a/'
menambahkan $'\a'
(karakter bel dalam sintaks ksh / bash / zsh) di akhir setiap baris.
sed
regexpt agak aneh di mataku yang naif.
$'...'
sintaks tidak universal. Misalnya, [t] csh tidak mendukungnya.
jika Anda menggunakan GNU screen
, Anda dapat mengaturnya untuk "menonton" jendela dengan ekornya, dan itu akan memberi tahu Anda di bilah status Anda, atau dengan bel yang ditentukan termcap Anda, bahwa ada keluaran baru di jendela itu.
http://www.gnu.org/software/screen/manual/html%5Fnode/Monitor.html#Monitor
sunting: baru saja menambahkan ini, karena Anda menyebutkan mac os x
hanya untuk bersenang-senang, jika Anda mencari sesuatu yang khusus, Anda dapat menggunakan say
perintah Mac OS X untuk membacakan file yang sedang Anda tonton. dapatkan saja logtail
perintahnya, dari:
http://www.hmug.org/pub/MacOS_X/BSD/Administration/Log/logcheck/
Dan menggunakannya dalam skrip seperti:
#!/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
acara dan peringatan (saya kira saya bisa membuatnya membunyikan bel juga) HANYA SEKALI. Tidak untuk setiap acara baru yang terjadi (tidak untuk setiap baris baru yang tersedia)
beep
perintah, alih-alih say
.
exec
perintah layar untuk melakukannya juga. Contoh di halaman manual adalah !:sed -n s/.*Error.*/\007/p
yang akan mengirim lonceng setiap kali "Kesalahan" ditampilkan di jendela itu.
Anda bisa menggunakan multitail . Ini adalah ekor yang disempurnakan yang mendukung eksekusi perintah pada kecocokan ekspresi reguler.
Misalnya perintah berikut memainkan suara dan membuka jendela xmessage setiap kali paket sumber Mars dicatat.
multitail -ex "martian source" "play beep.wav; xmessage " -i /var/log/messages
Sekadar catatan, seperti yang disarankan @Nils saya gunakan sed
untuk menambahkan bell
ke setiap baris.
The sed
baris yang disediakan oleh @Gilles
sed -e $'s/$/\a/'
berfungsi di mac saya (saya mengaktifkan "bel terdengar" dan "bel visual" di Terminal \ preferensi \ lanjutan).
$'...'
urutan melarikan diri adalah hal Bash-only.
Untuk siapa pun yang menemukan halaman ini, saya menggunakan tcsh dan ini sepertinya berfungsi:
tail -f changingfile | sed -e 's/.*/& \a/'
Jangan tanya saya apa arti sintaks sed ...
Anda dapat mencoba konsole
yang memungkinkan lansiran tentang aktivitas baru (atau hening) di tab mana saja.
konsole
akan seperti screen
itu peringatan sekali, sementara saya harus menerima peringatan untuk setiap baris baru.