Whatis 명령 출력 리디렉션 오류

Whatis 명령 출력 리디렉션 오류

다음을 수행하면 작동합니다

~$whatis `ls /bin`
stty (1)             - change and print terminal line settings

stty (2)             - unimplemented system calls

su (1)               - change user ID or become superuser

etc...

출력을 파일로 리디렉션하면 이 결과가 표시됩니까?

~$ whatis `ls /bin` > blah

kmod: nothing appropriate.

ntfsck: nothing appropriate.

답변1

>표준 출력( )만 리디렉션 stdout하지만 whatis파일에 대한 정보를 찾을 수 없으면 다른 스트림( )에 씁니다 stderr. 파일 핸들 2를 사용하여 리디렉션할 수도 있습니다. 이와 같이 stdout 및 stderr을 리디렉션하거나 다음을 2>수행하여 stderr을 stdout으로 리디렉션할 수 있습니다.stderr&>2>&1

리디렉션에 대한 모든 내용을 읽을 수 있습니다.여기

따라서 귀하의 예에서 모든 오류와 성공을 끝내려면 다음을 blah수행하십시오.

whatis `ls /bin` &> blah

또는 현재 선호되는 대체 하위 쉘 구문을 사용하십시오.

whatis $(ls /bin) &> blah

가능성은 희박 하지만 /bin그런 일을 할 때는 조심하세요. 결과는 ls /bin단어 분리의 영향을 받으므로 파일에 공백이 포함되어 있으면 다른 인수로 처리됩니다 whatis. 이것이 일반적으로 출력을 구문 분석하는 것을 권장하지 않는 이유입니다 ls(참조:이 문제토론을 해보세요)

당신은 당신이 시도하고 있는 다양한 일을 할 수 있습니다.

find /bin -maxdepth 1 -type f -exec whatis {} + &> blah

더 깊게(예: glob) 찾는 /bin대신 파일(매개변수)만 찾고 type f, 찾은 각 항목에 대해 수행한 whatis다음 우리가 논의한 것과 동일한 리디렉션을 수행합니다.

답변2

무엇인가요 키워드 시스템 명령에 대한 간단한 설명이 포함된 데이터베이스 파일 세트를 검색하고 결과를 표준 출력에 표시합니다. 완전한 단어 일치만 표시합니다.

kmod: 적합한 것이 없습니다. kmod에 대해 아무것도 찾지 못했다는 메시지가 있습니다.

모든 출력을 리디렉션하려면 다음을 시도하십시오.

whatis $(ls /bin) > /tmp/a.txt

관련 정보