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