쉘 스크립트에서 명령 메시지 숨기기

쉘 스크립트에서 명령 메시지 숨기기

bash스크립트 에서는 conntrack및 같은 도구를 사용하여 tcpdump결과를 파일로 출력하지만 명령/스크립트를 실행한 후 명령줄의 첫 번째 출력 줄에 나타나는 표준 메시지를 숨기고 싶습니다.

정보:

conntrack v1.0.0 (conntrack-tools): 6 flow entries have been shown.

매뉴얼 페이지를 읽은 후 bash다음을 시도했습니다.

conntrack -L|grep "dport=6439" &> /tmp/file

어떤 리디렉션 옵션을 시도하더라도 conntrack스크립트를 실행하는 셸에는 흐름 항목 수를 나타내는 메시지가 항상 나타납니다. tcpdump캡처 장치와 캡처된 패킷 수 등이 나열되는 위치도 마찬가지입니다 .

물론 clear출력을 빠르게 숨기기 위해 or 명령 뒤에 추가할 수도 있지만 그 솔루션은 보기 흉합니다.conntracktcpdump

그러한 메시지를 숨기는 방법은 무엇입니까?

답변1

이러한 메시지는 일반 출력(stdout) 대신 오류(stderr)로 인쇄됩니다.

stderr은 전송되지 않고 stdout만 전송됩니다. 따라서 &> /tmp/filegrep을 따르면 자체 stdout 및 stderr 출력만 병합하고 grepstderr은 병합하지 않습니다.conntrack

예를 들어 다음과 같은 것을 원할 수 있습니다.

conntrack -L 2>&1 | grep "dport=6439" > /tmp/file

stderr은 파일 설명자 2이고 stdout은 파일 설명자 1입니다. 2>&1stderr를 stdout에 병합합니다.

지속하면 출력이 로 파이프되기 전에 병합 2>&1됩니다 . 다시 병합할 필요가 없습니다 .conntrackgrepgrep

관련 정보