여러 파일에 대한 stdout(기본적으로 파일에 대한 stdout인 경우)

여러 파일에 대한 stdout(기본적으로 파일에 대한 stdout인 경우)

1. 요약

기본적으로 CLI 프로그램 stdout을 파일로 출력하는 경우 텍스트를 여러 파일로 출력하기 위해 수행할 수 있는 작업을 찾을 수 없습니다.

2. 예시

나는 사용한다변경 로그 생성팩. 이 패키지의 기본 출력은 다음과 같습니다.콘솔이 아닌 파일로 인쇄.

3. 예상되는 동작

동일한 출력을 2개의 파일에 추가하고 싶습니다.

  • SashaVersion.txt— stdout을 한 번만 추가하려는 파일;
  • CHANGELOG.md— stdout을 여러 번 추가하려는 파일을 덮어쓸 필요가 없습니다.

4. 도움이 되지 않음

  1. 매개변수 의 이중 사용 -fchangelog -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

관련 정보