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 2>이므로 이를 리디렉션할 수도 있습니다. stdout과 stderr을 모두 리디렉션할 수 있거나 다음을 수행하여 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

/binglob과 같이 더 깊이 들어가지 않고 파일(인수)만 찾은 다음 찾은 각 type f항목에 대해 실행한 whatis다음 우리가 이야기했던 것과 동일한 리디렉션을 수행합니다.

답변2

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

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

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

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

관련 정보