![stdin에서 읽은 프로그램 출력 리디렉션](https://linux55.com/image/48491/stdin%EC%97%90%EC%84%9C%20%EC%9D%BD%EC%9D%80%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%20%EC%B6%9C%EB%A0%A5%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98.png)
출력을 리디렉션하고 싶을 때가. 출력내가 사용할 프로그램
./a.out > output.txt
프로그램이 다음을 읽을 때는 작동하지 않습니다.표준 입력. 이 경우 출력을 어떻게 리디렉션하시겠습니까?
나는 단지 사용할 수 있습니다
./a.out < inputs.txt > output.txt
나는 똑같은 일을 할 수 있지만 입력을 읽을 수 있습니다표준 입력?
편집: 작동한다는 것을 깨달았지만 모든 것이 파일에 저장되기 때문에 프롬프트가 표시되지 않습니다.출력.txt. 따라서 유일한 문제는 프롬프트를 보는 것입니다.표준 입력동시에 리디렉션을 유지하십시오.
답변1
stderr
한 가지 옵션은 대신 프롬프트를 작성하는 것입니다 stdout
. 터미널에서는 표시되지만 에서는 표시되지 않습니다 output.txt
.
또 다른 옵션은 출력에 리디렉션을 사용하지 않고 출력 파일 이름을 매개변수로 전달하고 파일을 직접 여는 것입니다. 그런 다음 stdout
프롬프트에 따라 사용할 수 있습니다 . (이것이 더 유연합니다. 파일에만 보낼 내용, 화면에만 보낼 내용, 두 가지 모두에 보낼 내용을 결정할 수 있습니다.)
코드를 변경할 수 없는 경우 유일한 옵션은 tee
다른 유틸리티를 사용하는 것입니다. 버퍼링이 문제가 될 수 있습니다.stdbuf
도움이 될 수도 있습니다.