tail -Fビープ音を作成する方法はありますか?


23

新しいデータが入ったとき(ファイルに新しい行が追加されたとき)にビープ音を鳴らす(端末でベルを鳴らす)方法はありますtail -Fless。または、LinuxまたはMacでこれを行う他のUNIXユーティリティがあります。

回答:


13

考えの移行は、tailスルーの出力をパイプ処理しsed、改行をベル/改行に置き換えることです。

ただしtailx-window内で使用する場合、より簡単な解決策があります。そこで、ウィンドウのコンテンツが変更されたときにアクションを実行できます(ちらつき、ベルなど)。


4
改行を置き換えないで、行の最後に追加してください。
ケビン

@Nils、このsedアイデアは素晴らしいですが、それを機能させるのに十分な「sed」がわからない、正規表現(通常の方法)で改行をキャプチャできないようです、着信ストリームを行ごとに解釈しないでください。
アリ

5
@Ali確かに、sedは行ごとに機能し、改行は直接表示されません。各行の末尾に(ksh / bash / zsh構文のベル文字)をsed -e $'s/$/\a/'追加し$'\a'ます。
ジル 'SO-悪であるのをやめる'

@Gillesに感謝します(Macでも)魔法のように働きました!sed正規表現は、私の素朴な目には少し奇妙です。
アリ

1
@Gilles:$'...'構文は普遍的ではないことに注意してください。たとえば、[t] cshはサポートしていません。
キーストンプソン

13

GNUを使用している場合screen、ウィンドウをテールで「見る」ように設定できます。ステータスバーで、またはtermcapで定義されたベルで、そのウィンドウに新しい出力があることを警告します。

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


編集:あなたはmac os xについて言及したので、これを追加する必要がありました

楽しみのために、特に何かを探しているなら、Mac OS Xのsayコマンドを使用して、見ているファイルを読むことができます。以下logtailからコマンドを取得します。

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

次のようなスクリプトで使用します。

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

@Tim、、screenショー、アラートに感謝します(私もそれを鳴らすことができると思います)一度だけ。発生するすべての新しいイベント用ではありません(利用可能なすべての新しい行用ではありません)
アリ

1
ファイルを読み取ることができるMac用の例を追加しました。logtailのlinuxバージョンをインストールしbeep、の代わりにコマンドを使用して、linuxで動作するように変更できますsay
ティムケネディ

クール!私の場合、画面を見ずにログファイルを監視できるようにビープ音を使用していますが、それは創造的です。また、実際のビープ音は音声よりも優れている場合があります。
アリ

1
画面のexecコマンドを使用して同様に行うこともできます。マンページの例では!:sed -n s/.*Error.*/\007/p、そのウィンドウに「エラー」が表示されるたびにベルが送信されます。
アルケージュ

同じことがTmuxにも当てはまります。
0xC0000022L

10

マルチテールを使用できます。これは、正規表現一致でのコマンド実行をサポートする拡張テールです。

たとえば、次のコマンドはサウンドを再生し、火星のソースパケットが記録されるたびにxmessageウィンドウを開きます。

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

4

記録のためだけに、@ Nilsが各行sedにa bellを追加するために使用していると示唆したように。

sed@Gillesが提供するライン

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

Macで動作します(Terminal \ preferences \ advancedで「可聴ベル」と「視覚ベル」を有効にしました)。


注目すべきは、$'...'エスケープシーケンスはBash専用であることです。
amphetamachine

@amphetamachineおかげで、私はbashユーザーですが、あなたや他の人が他のシェルでも動作するバージョンを追加できるといいですね。
アリ

私はbashユーザーでもありますが、他のシェルでは何が機能し、何が機能しないのかを徐々に学習しています。
amphetamachine

1

このページを見つける他の人のために、私はtcshを使用していますが、これはうまくいくようです:

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

sed構文の意味を聞かないでください...


1
私は自分自身を助けることができない、私は尋ねなければならない、あなたはsed表現を説明できますか?
アシュワニアガルワル

0

konsole任意のタブで新しいアクティビティ(または無音)のアラートを許可する方法を試すことができます。


私が想像するkonsoleようになりscreen、私はすべての新しい行のためのアラートを受信する必要がある一方で、それは、一度警告します。
アリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.