다음을 수행하면 작동합니다.
~$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
/bin
glob과 같이 더 깊이 들어가지 않고 파일(인수)만 찾은 다음 찾은 각 type f
항목에 대해 실행한 whatis
다음 우리가 이야기했던 것과 동일한 리디렉션을 수행합니다.
답변2
무엇인가요 키워드에 대한 시스템 명령의 간단한 설명이 포함된 일련의 데이터베이스 파일을 검색하고 그 결과를 표준 출력에 표시합니다. 완전한 단어 일치만 표시됩니다.
kmod: 적절한 것이 없습니다. kmod에 대해 아무것도 찾지 못했다는 메시지입니다.
모든 출력을 리디렉션하려면 다음을 시도하십시오.
whatis $(ls /bin) > /tmp/a.txt