Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何捕获更改文件夹中文件的事件?_Bash_Shell_Unix - Fatal编程技术网

Bash 如何捕获更改文件夹中文件的事件?

Bash 如何捕获更改文件夹中文件的事件?,bash,shell,unix,Bash,Shell,Unix,UNIX中文件夹的内容发生更改(删除、添加或编辑)时是否会生成任何事件,是否可以捕获此事件以触发另一个脚本?如果您使用的是Linux,则可以使用子系统捕获此排序内容。Python、Perl等有inotify绑定,或者您可以在shell脚本中使用inotifywait程序(包的一部分) 例如,如果我运行inotifywait-m/tmp,这将监视/tmp的更改。如果创建文件,我会看到: /tmp/ CREATE foo /tmp/ OPEN foo /tmp/ ATTRIB foo /tmp/ C

UNIX中文件夹的内容发生更改(删除、添加或编辑)时是否会生成任何事件,是否可以捕获此事件以触发另一个脚本?

如果您使用的是Linux,则可以使用子系统捕获此排序内容。Python、Perl等有
inotify
绑定,或者您可以在shell脚本中使用
inotifywait
程序(包的一部分)

例如,如果我运行
inotifywait-m/tmp
,这将监视
/tmp
的更改。如果创建文件,我会看到:

/tmp/ CREATE foo
/tmp/ OPEN foo
/tmp/ ATTRIB foo
/tmp/ CLOSE_WRITE,CLOSE foo
/tmp/ DELETE foo
如果我删除该文件,我会看到:

/tmp/ CREATE foo
/tmp/ OPEN foo
/tmp/ ATTRIB foo
/tmp/ CLOSE_WRITE,CLOSE foo
/tmp/ DELETE foo

您可以编写一个shell脚本,从
inotifywait
读取这些通知,并相应地执行操作。

感谢您的提示,我使用inotify.h头文件创建了一个C程序,用于侦听文件夹中的更改。