运行 多个带有 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 > ""' . "" ""
我正在尝试使用 '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 > ""' . "" ""