如果我们使用 tail 命令,我们可以监听表示文件长度(以字节为单位)更改的事件。
我正在寻找一种方法来侦听文件内容更改但长度相同时的事件。具体来说,就是监听文件第一行或第二行的更改。
(我们可能期望 head 命令可以做到这一点,但它确实不是看起来 head 命令可以监听变化,它只是抓住内容的开头。)
有谁知道是否可以监听文件内容的更改(特别是文件的开头)?
请注意,有一个进程将数据附加到文件,另一个进程读取并删除文件的第一行。
我有兴趣独立侦听文件头的更改,但我不想捕获或希望能够过滤掉附加到文件的事件。
答案1
也许是这样的:
#!/bin/bash
while true; do
diff -q <(head -n 1 fileA.txt) <(head -n 1 fileB.txt)
sleep 5
done
给定这两个文件 (fileA.txt
和fileB.txt
):
cat fileA.txt fileB.txt
foo
bar
foo
bar
当我改变第一的行fileA.txt
:
cat fileA.txt
fooo
bar
我从脚本中得到以下输出:
./checkFirst.sh
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
如果我改变第二行,脚本中没有任何反应,它只是不断循环:
cat fileA.txt
foo
barbara
使用 Mac OS X 10.11.6 进行测试并且:
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.