是否有一个程序会在修改文件时自动重新运行,例如make
?
例如,当我编写sphinx
文档时,如果每次编辑任何相关文件时都自动运行make html
,那就太好了。
答案 0 :(得分:8)
对于简单的事情,重新运行可能非常合适:http://pypi.python.org/pypi/rerun
"每当在当前目录或其子目录中修改文件时重命令运行给定命令的命令行可执行Python脚本。"
它需要一个Python解释器,但不关心你的命令是用Python编写的。
Usage
rerun [--help|-h] [--verbose|-v] [--ignore|-i=<file>] [--version] <command>
Where:
<command> Command to execute
--help|-h Show this help message and exit.
--ignore|-i=<file> File or directory to ignore. Any directories of the
given name (and their subdirs) are excluded from the
search for changed files. Any modification to files of
the given name are ignored. The given value is
compared to basenames, so for example, "--ignore=def"
will skip the contents of directory "./abc/def/" and
will ignore file "./ghi/def". Can be specified multiple
times.
--verbose|-v Display the names of changed files before the command
output.
--version Show version number and exit.
答案 1 :(得分:4)
在Linux中,您可以使用以下命令行:
while true; do inotifywait -e close_write *.py; make; done
使用标准系统命令inotifywait
,如果不可用,请安装以下内容:
sudo apt install inotify-tools
答案 2 :(得分:3)
好吧,因为如果没有任何改变,make将不会做任何事情,那么
while true; do sleep 60; make html; done
或你选择的shell中的等价物?我不认为通常的文件系统层是事件驱动的,它们会让你通知你文件的变化,而不会自己做类似的事情,但是DBUS可能会做那种事情。
答案 3 :(得分:2)
您可以在循环中使用inotifywait:https://github.com/rvoicilas/inotify-tools/wiki/#info
答案 4 :(得分:1)
答案 5 :(得分:1)
根据答案https://stackoverflow.com/a/22907316/71522 <s:element1></s:element1>
<s:element2></s:element2>
似乎效果很好:
watchman
每次 $ watchman-make -p '*.c' 'Makefile' -t all
或make all
文件更改时,都会重新运行*.c
。
可以安装:
Makefile
答案 6 :(得分:0)
此问题也在这里提出:https://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes/
您可以尝试reflex
# Rerun make whenever a .c file changes
reflex -r '\.c$' make