stdout para vários arquivos, se stdout para o arquivo por padrão

1

1. Resumo

Eu não acho, o que posso fazer, que a saída de texto para vários arquivos, se por padrão no programa CLI stdout para o arquivo.

2. Exemplo

Eu uso o pacote generate-changelog . Neste pacote, por padrão, a saída imprime no arquivo, não no console .

3. Comportamento esperado

Eu quero adicionar a mesma saída para 2 arquivos:

  • SashaVersion.txt - file, no qual desejo adicionar stdout apenas uma vez;
  • CHANGELOG.md - arquivo, no qual desejo adicionar stdout várias vezes; este arquivo não deve sobrescrever.

4. Não ajudou

  1. Double usando -f argumento - changelog -f SashaVersion.txt -f CHANGELOG.md .
  2. Comando tee , por exemplo, - changelog -f | tee SashaVersion.txt CHANGELOG.md .
por Саша Черных 24.01.2018 / 16:24

1 resposta

5

Da página que você vinculou:

Options:

-f, --file [file] file to write to, defaults to ./CHANGELOG.md, use - for stdout

Observe que traço é uma maneira bastante comum de marcar stdin / stdout.

Com base nesse texto, isso provavelmente funcionaria:

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

Embora ainda imprima uma cópia da saída para o terminal, qualquer um desses fatores inibe isso:

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

Se -f - não funcionar, tente -f /dev/stdout .

É claro que, se você estiver executando o zsh, nem precisará de tee :

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

Em todos eles, substitua > por >> se você quiser que o novo texto seja anexado ao arquivo, em vez de sobrescrever o arquivo. Se você quisesse que a saída sobrescrevesse SashaVersion.txt e também fosse anexada a CHANGELOG.md , além de ser escrita em stdout, você poderia fazer:

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

Ou com zsh :

$ changelog -f - >&1 > SashaVersion.txt >> CHANGELOG.md
    
por 24.01.2018 / 18:27

Tags