当新数据进入(新行添加到文件中)时,有没有办法发出tail -F
或发出蜂鸣声(在终端中按响铃)。less
或者是否有任何其他 UNIX 实用程序可以在 Linux 或 Mac 上执行此操作。
答案1
一个想法可能是通过管道输出tail
throughsed
并用 bell/newline 替换换行符。
tail
但如果您在一个范围内使用,可能有一个更简单的解决方案X-窗口。当窗口内容发生变化(闪烁、响铃等)时,您可以执行操作。
答案2
如果您使用 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
答案3
你可以使用多尾。它是一个增强型tail 支持正则表达式匹配的命令执行。
例如,以下命令每次播放声音并打开一个 xmessage 窗口火星来源数据包已记录。
multitail -ex "martian source" "play beep.wav; xmessage " -i /var/log/messages
答案4
对于找到此页面的其他人,我正在使用 tcsh,这似乎有效:
tail -f changingfile | sed -e 's/.*/& \a/'
不要问我 sed 语法是什么意思......