我正在使用fish
shell 并尝试将 stdout 和 stderr 记录到两个单独的文件中,并同时在终端中打印它们(例如,通过将每个流通过管道传输到tee
)。
在bash
我会做(见https://stackoverflow.com/a/692407/5082444):
command > >(tee -a stdout.log) 2> >(tee -a stderr.log >&2)
我如何在fish
shell 中实现相同的目标?
答案1
你可以做类似的事情
begin; command | tee -a stdout.log ; end ^| tee -a stderr.log >&2
附带条件是,如果第一个tee
向 stderr 写入任何内容,它也会被记录,而 bash 版本则不是这种情况。