화면에 출력을 인쇄하고 파일로 리디렉션하고 오류를 다른 파일로 전달합니다.

화면에 출력을 인쇄하고 파일로 리디렉션하고 오류를 다른 파일로 전달합니다.

저는 이 실험실 질문에 답하려고 합니다. tee명령을 사용하지 않고 이 문제를 해결할 수 있는 방법이 있습니까 ?

server1의 user1로 , 및 ls에서 명령을 실행합니다 . 출력을 화면에 인쇄하고 파일로 리디렉션하며 오류를 파일로 전달합니다 . 명령이 실행된 후 두 파일을 모두 확인하고 결과를 분석합니다. (팁: 입력, 출력 및 오류 리디렉션)./etc/dvd/var/tmp/ioutput/tmp/ioerror

이것을 시도하면 출력이 화면에 인쇄되지 않습니다.

[user1@server1 ~]$ ls /etc /dvd /var 1> /tmp/ioutput 2> /tmp/ioerror

명령과 함께 사용 하면 tee오류 파일이 비어 있습니다.

ls /etc /dvd /var | tee /tmp/ioutput 2> /tmp/ioerror

리디렉션 연산자만 사용하여 해결할 수 있는 방법이 있습니까?

답변1

를 사용하면 됩니다 tee. 그러나 표준 오류 출력을 얻으려면 원본 프로그램의 표준 오류를 리디렉션해야 합니다. Pipe( |)는 표준 출력만 파이프로 연결하므로 tee오류 파일이 비어 있습니다. 당신이 원하는 것은 :

ls /etc /dvd /var 2> /tmp/ioerror | tee /tmp/ioutput 

화면에서 stderr 및 stdout을 보려면 다음을 시도하십시오.

ls /etc /dvd /var 2> >(tee /tmp/ioerror) | tee /tmp/ioutput 

이는 먼저 stderr를 로 리디렉션합니다 tee /tmp/ioerror. 즉, 화면에 표시되고 파일에 저장됩니다. 그런 다음 stdout을 파이프하여 tee /tmp/ioutput인쇄되어 파일에 저장되는지 확인합니다.

관련 정보