![2개의 명령을 실행하고, 파일에 추가하고 콘솔에 명령 출력을 표시하지만 명령은 하나만](https://linux55.com/image/208742/2%EA%B0%9C%EC%9D%98%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%98%EA%B3%A0%2C%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EC%B6%94%EA%B0%80%ED%95%98%EA%B3%A0%20%EC%BD%98%EC%86%94%EC%97%90%20%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%ED%91%9C%EC%8B%9C%ED%95%98%EC%A7%80%EB%A7%8C%20%EB%AA%85%EB%A0%B9%EC%9D%80%20%ED%95%98%EB%82%98%EB%A7%8C.png)
nmap과 같은 Linux 명령을 실행하고 입력을 txt2html 명령에 전달하여 파일에 추가하려고 하지만 nmap 명령의 출력만 표시합니다. 제공된 명령은 작동하지만 txt2html 출력을 출력하므로 터미널에 nmap 출력을 표시하고 싶습니다. 이를 수행할 수 있는 방법이 있습니까?
nmap localhost | txt2html -extract -8 | tee -a file_to_append
답변1
나는 이것이 당신이 원하는 것이라고 믿습니다.
nmap localhost | tee /dev/stderr | txt2html -extract -8 >> file_to_append
설명하다:
- nmap을 실행합니다.
- nmap의 출력은 /dev/stderr 파일(표준 오류임)과 stdout 모두로 전송됩니다.
- txt2html은 이전 단계에서 stdout을 읽고 그 출력을 file_to_append에 추가합니다. 이제 stderror는 리디렉션되지 않으므로 콘솔에 나타나야 볼 수 있습니다.
다음은 일부 더미 명령이 포함된 출력이 없는 예입니다.
$ echo hi | tee /dev/stderr | sed "s/hi/bye/" > /tmp/test.txt
hi
$ cat /tmp/test.txt
bye
터미널 출력이 저장된 내용과 다른 것을 확인할 수 있습니다.
답변2
사용 중인 셸이 를 사용한 프로세스 대체를 지원한다고 가정하면 다음 명령 에 대한 리디렉션을 >(...)
사용할 수 있습니다 .tee
txt2html
nmap localhost | tee >(txt2html -extract -8 >>some-file)
여기에서는 txt2html
에서 입력을 가져 tee
와서 에 출력을 추가합니다 some-file
.
txt2html
를 쓰는 것 외에도 tee
터미널에 연결될 수 있는 표준 출력 스트림에 원시 입력을 씁니다.
이 경우 모든 진단 출력은 nmap
바이패스되어 tee
터미널 txt2html
로 직접 전송됩니다. 이를 처리하려면 2>&1
표준 오류 스트림이 표준 출력 스트림과 함께 리디렉션되도록 파이프 왼쪽에서 명령 출력을 리디렉션하세요.