我想要一个脚本:
- 触发一个
make 2&>1 | less -R
- 监听文件夹中的每一个变化(使用
inotifywait -R
)
修改文件夹后,脚本必须终止less
进程并重新启动。
我不确定执行此操作的正确方法(允许脚本的两个分支并行运行 + 允许监视作业知道作业的 pid less
,因为后者必须在前台)。
我想要一个脚本:
make 2&>1 | less -R
inotifywait -R
)修改文件夹后,脚本必须终止less
进程并重新启动。
我不确定执行此操作的正确方法(允许脚本的两个分支并行运行 + 允许监视作业知道作业的 pid less
,因为后者必须在前台)。
如果您只想在每次更改某些内容时触发自动重新编译,那么您可以尝试以下操作:
while inotifywait -qqr /dir/to/watch; do
make | less
done
我意识到这个解决方案不会在每次重新编译时杀死 less 命令
上面的一个轻微变化是在完成后放少:
while inotifywait -qqr /dir/to/watch; do
make
done | less
此版本将立即触发重新编译(在第一次 make 完成后),但它需要您从 less 中分页浏览所有输出(并且不要用 q 终止它)
这是您可能想要玩的另一个变体。在这个版本中,如果您更改代码,正在进行的 make 将被终止并重新启动。但是,输出不会有屏幕分页(这很难与后台进程结合):
BGPID=0
while inotifywait -qqr /dir/to/watch; do
[ "$BGPID" -gt 1 ] && kill $BGPID
(make | tail -f)&
BGPID=$!
done
而不是像下面这样使用较少的尝试尾巴。
制作命令:
make 2&>1 /output/file
和另一个终端中的tail命令:
tail -f /output/file
这应该向您显示所有正在发生的变化的实时流。