stdout 到多个文件,如果 stdout 默认情况下到文件

stdout 到多个文件,如果 stdout 默认情况下到文件

一、总结

我找不到,我能做什么,将文本输出到多个文件,如果默认情况下在 CLI 程序 stdout 到文件中。

2. 示例

我用生成变更日志包裹。在这个包中默认输出打印到文件,而不是控制台

3. 预期行为

我想将相同的输出添加到 2 个文件中:

  • SashaVersion.txt— 文件,我只想在其中添加一次 stdout;
  • CHANGELOG.md— 文件,我想在其中多次添加 stdout;该文件不必覆盖。

4.没有帮助

  1. 双重使用-f参数 — changelog -f SashaVersion.txt -f CHANGELOG.md.
  2. 球座命令,例如 - changelog -f | tee SashaVersion.txt CHANGELOG.md

答案1

从您链接到的页面:

选项:

-f, --file [file] 要写入的文件,默认为./CHANGELOG.md,用于-标准输出

请注意破折号,这是标记 stdin/stdout 的常见方法。

根据该文本,这可能会起作用:

$ changelog -f - | tee SashaVersion.txt CHANGELOG.md

尽管它仍然会将输出的一份副本打印到终端,所以其中任何一个都可以抑制这种情况:

$ changelog -f - | tee SashaVersion.txt > CHANGELOG.md
$ changelog -f - | tee SashaVersion.txt CHANGELOG.md > /dev/null

如果-f -不起作用,请尝试-f /dev/stdout


当然,如果您正在运行 zsh,您甚至不需要tee

zsh$ changelog -f - > SashaVersion.txt > CHANGELOG.md

在所有这些中,如果您希望新文本替换>>>附加的到文件而不是覆盖文件。如果您希望输出覆盖SashaVersion.txt,并附加到CHANGELOG.md标准输出上,您可以这样做:

$ changelog -f - | tee SashaVersion.txt | tee -a CHANGELOG.md

或者与zsh

$ changelog -f - >&1 > SashaVersion.txt >> CHANGELOG.md

相关内容