我想拥有一个脚本,该脚本将:
- 触发
make 2&>1 | less -R
- 聆听文件夹中的每一个更改(使用
inotifywait -R
)
修改文件夹时,脚本必须杀死less
进程并重新启动。
我不确定正确执行此操作的方法(允许脚本的两个分支并行运行 允许观察工作知道less
作业的PID,因为后者必须在前景中)。
如果您只想每次更改某些东西时都触发自动重新编译,则可以尝试以下内容:
while inotifywait -qqr /dir/to/watch; do
make | less
done
我意识到,每次发出重新编译时,这种解决方案不会杀死较少的命令
上面的略有变化是在完成之后较少:
while inotifywait -qqr /dir/to/watch; do
make
done | less
此版本将立即触发重新编译(在第一个制作完成后),但是它将要求您通过LINS的所有输出(并且不要使用Q终止)
这是您可能想与之一起玩的另一个变体。在此版本中,如果您更改代码,则正在进行的制作将被杀死和重新启动。但是,将没有输出的屏幕分页(这很难与背景过程结合):
BGPID=0
while inotifywait -qqr /dir/to/watch; do
[ "$BGPID" -gt 1 ] && kill $BGPID
(make | tail -f)&
BGPID=$!
done
而不是使用较少的尝试尾巴。
make命令:
make 2&>1 /output/file
和另一个终端中的尾巴命令:
tail -f /output/file
应该向您展示所有发生所有变化的现场流。