Jawaban:
Gagasan untuk mengirim output tailmelalui seddan mengganti baris baru dengan bel / baris baru.
Tetapi ada kemungkinan solusi yang lebih mudah jika Anda menggunakan di taildalam x-window . Di sana Anda dapat melakukan suatu tindakan ketika konten jendela berubah (flicker, bell, apa pun).
sedIde 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.
sedregexpt 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 sayperintah Mac OS X untuk membacakan file yang sedang Anda tonton. dapatkan saja logtailperintahnya, 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
screenacara 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)
beepperintah, alih-alih say.
execperintah layar untuk melakukannya juga. Contoh di halaman manual adalah !:sed -n s/.*Error.*/\007/pyang 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 seduntuk menambahkan bellke setiap baris.
The sedbaris 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 konsoleyang memungkinkan lansiran tentang aktivitas baru (atau hening) di tab mana saja.
konsoleakan seperti screenitu peringatan sekali, sementara saya harus menerima peringatan untuk setiap baris baru.