运行 多个带有 entr 的命令

Run multiple commands with entr

我正在尝试使用 'entr' 命令自动编译 Groff 文档。

我希望运行以下行:

refer references.bib  | groff -ms  -T pdf > 

遗憾的是,如果我尝试这样做,它只会编译一次:

echo  | entr refer references.bib  | groff -ms  -T pdf > 

我也试过以下方法,但它创建了一个无限循环,无法使用 Ctrl+C:

compile(){
    refer references.bib  | groff -ms  -T pdf > 
}

while true; do
    compile  
    echo  | entr -pd -s 'kill $PPID'
done

正确的做法是什么?

我没有尝试这个,因为我不想安装 entr。但我认为以下应该有效:

echo "" | entr sh -c "refer references.bib  | groff -ms  -T pdf > "

请注意,我们 运行 将 shell 中的管道 refer | groff 组合在一起。您问题中的命令在文件更改时没有 shell 运行s refer,但 groff 只有一次。在 entr ... | groff 中,groff 部分不是由 entr 执行,而是由 bash 并行执行。

此命令仅在 </code> 和 <code> 不包含特殊符号如空格、*$ 时有效。处理这些参数的正确方法是 ...

echo "" | entr sh -c 'refer references.bib "" | groff -ms "" -T pdf > ""' . "" ""