저는 이 실험실 질문에 답하려고 합니다. 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
인쇄되어 파일에 저장되는지 확인합니다.