一、总结
我找不到,我能做什么,将文本输出到多个文件,如果默认情况下在 CLI 程序 stdout 到文件中。
2. 示例
我用生成变更日志包裹。在这个包中默认输出打印到文件,而不是控制台。
3. 预期行为
我想将相同的输出添加到 2 个文件中:
SashaVersion.txt
— 文件,我只想在其中添加一次 stdout;CHANGELOG.md
— 文件,我想在其中多次添加 stdout;该文件不必覆盖。
4.没有帮助
- 双重使用
-f
参数 —changelog -f SashaVersion.txt -f CHANGELOG.md
. - 球座命令,例如 -
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