Answers:
一个想法migth是管的输出tail
通过sed
,并替换为钟/换行符的换行符。
但是,如果tail
在x窗口中使用,则可能存在更简单的解决方案。当窗口内容更改(闪烁,响铃或其他)时,您可以在其中执行操作。
sed
想法很棒,但是我不知道足够的“ sed”来使其起作用,看来我无法以常规方式(我习惯于)在正则表达式中捕获换行符,我想我需要告诉sed不要逐行解释传入的流。
sed -e $'s/$/\a/'
添加$'\a'
(以ksh / bash / zsh语法表示的响铃字符)。
sed
regexpt对我幼稚的眼睛有点奇怪。
$'...'
语法不是通用的。例如,[t] csh不支持它。
如果使用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
screen
显示一次并显示警报(我想我也可以使它响起)。并非针对发生的每个新事件(并非针对每个可用的新行)
beep
命令(而不是)来将其更改为适用于Linux say
。
exec
命令来做。手册页中的示例是!:sed -n s/.*Error.*/\007/p
,每次在该窗口中显示“错误”时,都会发出响铃。
仅作记录,正如@Nils所建议的那样,我正在向每行sed
添加一个bell
。
在sed
由@Gilles提供线
sed -e $'s/$/\a/'
在我的Mac上可以使用(我在Terminal \ preferences \ advanced中启用了“音频铃声”和“可视铃声”)。
$'...'
转义序列仅适用于Bash。
对于找到此页面的其他人,我正在使用tcsh,这似乎可行:
tail -f changingfile | sed -e 's/.*/& \a/'
不要问我sed语法是什么意思...