Stdout

標準輸出到多個文件,如果標準輸出預設到文件

  • January 24, 2018

一、總結

如果預設情況下在 CLI 程序 stdout 到文件中,我找不到,我能做什麼,該文本輸出到多個文件。

2. 例子

我使用generate-changelog包。在這個包中預設輸出列印到文件,而不是控制台

3. 預期行為

我想將相同的輸出添加到 2 個文件:

  • SashaVersion.txt— 文件,我只想在其中添加一次標準輸出;
  • CHANGELOG.md— 文件,我想在其中多次添加標準輸出;這個文件不是必須覆蓋的。

4.沒有幫助

  1. 雙重使用-f參數 - changelog -f SashaVersion.txt -f CHANGELOG.md
  2. tee命令,例如 —changelog -f | tee SashaVersion.txt CHANGELOG.md

從您連結到的頁面:

選項:

-f, --file [file] 要寫入的文件,預設為./CHANGELOG.md用於-標準輸出

請注意,破折號是一種非常常見的標記標準輸入/標準輸出的方式。

根據該文本,這可能會起作用:

$ 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

引用自:https://unix.stackexchange.com/questions/419386