複数のファイルのstdout(デフォルトではファイルのstdoutの場合)

複数のファイルのstdout(デフォルトではファイルのstdoutの場合)

1. まとめ

デフォルトでは、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

関連情報