Kuyruk-bip yapmak için bir yolu var mı?


23

Yeni veriler geldiğinde (dosyaya yeni bir satır eklenir), bir zil sesi yapmanın tail -Fveya lessbip sesi çıkarmanın (terminaldeki zili çalmanın) bir yolu var mı ? Veya bunu Linux veya Mac'te yapmak için başka bir unix yardımcı programı var mı?

Yanıtlar:


13

Bir fikir borusuna sonucu da yararlı olabileceğini düşündürmektedir tailyoluyla sedve çan / yeni satır ile yeni satır değiştirin.

Ancak x-windowtail içinde kullanırsanız, muhtemelen daha kolay bir çözüm var . Burada, pencerenin içeriği değiştiğinde (titreme, zil, her neyse) bir eylem gerçekleştirebilirsiniz.


4
Yeni çizgiyi değiştirmeyin, satırın sonuna ekleyin.
Kevin

@Nils, bu sedfikir harika ama çalışmasını sağlamak için yeterince 'sed' bilmiyorum, görünüşe göre regexpt içinde yeni çizgiler yakalayamıyor gibiyim (alışkınım) gelen akış satır satır satır yorumlamak yok.
Ali

5
@Ali Gerçekten, sed satır satır hareket eder ve doğrudan yeni satırları görmezsiniz. Her satırın sonuna sed -e $'s/$/\a/'bir $'\a'(ksh / bash / zsh sözdiziminde zil karakteri) ekler .
Gilles 'SO- kötülük yapmayı bırak'

Thanks @Gilles, bir cazibe gibi çalıştı (mac de)! sedregexpt saf gözlerime göre biraz tuhaf.
Ali

1
@Gilles: $'...'Sözdiziminin evrensel olmadığını unutmayın . Örneğin, [t] csh desteklemiyor.
Keith Thompson

13

GNU kullanıyorsanız screen, kuyruğu olan pencereyi "izlemeye" ayarlayabilirsiniz; durum çubuğunuzda veya termcap'iniz tanımlanmış zili tarafından bu pencerede yeni çıktı olduğu konusunda sizi uyaracaktır.

http://www.gnu.org/software/screen/manual/html%5Fnode/Monitor.html#Monitor


düzenleme: sadece bu eklemek zorunda kaldı, çünkü mac os x

sadece eğlence için, özellikle de bir şey arıyorsanız, sayizlediğiniz dosyayı okumak için Mac OS X'in komutunu kullanabilirsiniz. sadece logtailkomutu al:

http://www.hmug.org/pub/MacOS_X/BSD/Administration/Log/logcheck/

Ve şöyle bir komut dosyasında kullanın:

#!/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

Teşekkürler @Tim, screengösterir ve alarm verir (Sanırım ben de zili çalabilirim ) SADECE. Gerçekleşen her yeni etkinlik için değil (mevcut olan her yeni hat için değil)
Ali

1
dosyayı okuyabilecek bir mac örneği ekledim. logtail linux sürümünü yükleyerek ve beepbunun yerine komutu kullanarak linux için çalışacak şekilde değiştirebilirsiniz say.
Tim Kennedy,

güzel! Bu yaratıcı, ancak benim durumumda ekrana bakmadan bir günlük dosyasını izleyebilmek için bip sesini kullanıyorum. Ve gerçek bip sesi bir sesten daha iyi olabilir.
Ali

1
Ayrıca ekran execkomutunu da kullanabilir . Manpage'deki örnek !:sed -n s/.*Error.*/\007/p, bu pencerede "Hata" her görüntülendiğinde bir zil gönderecek olan örnektir .
Arcege

Aynısı Tmux için de geçerlidir.
0xC0000022L

10

Multitail kullanabilirsiniz . Bu bir olduğunu geliştirilmiş destekler düzenli ifade maç yürütülmesine emir vermesini kuyruk.

Örneğin, aşağıdaki komut bir ses çalar ve bir Marslı kaynak paketi her kaydedildiğinde bir xmessage penceresi açar .

multitail -ex "martian source" "play beep.wav; xmessage " -i /var/log/messages

4

Sadece kayıt için, @Nils kullandığımı önerdiğim gibi sedbell her satıra bir a eklemek için .

sed@Gilles ile sağlanan hat

sed -e $'s/$/\a/' 

Mac'imde çalışıyor (Terminal \ Preferences \ advanced'de "sesli zil" ve "görsel zil" i etkinleştirdim).


Unutulmaması gereken, $'...'kaçış dizilerinin tek başına bir şey olduğu.
amfetamachine

@ amphetamachine teşekkürler, ben kendimi bir bash kullanıcısı iken, siz veya başkaları diğer mermilerde de çalışacak sürümler ekleyebilirseniz çok iyi olur.
Ali

Ben de bir bash kullanıcısıyım ama diğer mermilerde neyin işe yarayıp neyin işe yaramadığını yavaşça öğreniyorum .
amfetamachine

1

Bu sayfayı bulan başka biri için tcsh kullanıyorum ve bu işe yarıyor:

tail -f changingfile | sed -e 's/.*/& \a/'

Sakın sözdiziminin ne anlama geldiğini sorma bana ...


1
Kendime yardım edemem, sormalıyım, sed ifadesini açıklayabilir misin?
Ashwani Agarwal

0

konsoleHerhangi bir sekmede hangisinin yeni etkinlik (veya sessizlik) konusunda uyarıda bulunabileceğini deneyebilirsiniz .


Her yeni hat için bir uyarı almam gerekecekken, bir kez uyardığı konsolegibi olacağını hayal ediyorum screen.
Ali
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.