![여러 파일에 대한 stdout(기본적으로 파일에 대한 stdout인 경우)](https://linux55.com/image/126272/%EC%97%AC%EB%9F%AC%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EB%8C%80%ED%95%9C%20stdout(%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9C%BC%EB%A1%9C%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EB%8C%80%ED%95%9C%20stdout%EC%9D%B8%20%EA%B2%BD%EC%9A%B0).png)
1. 요약
기본적으로 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