> apenas redireciona a saída padrão ( stdout ), mas quando whatis não consegue encontrar informações sobre um arquivo, ele grava isso em um fluxo diferente, stderr . Você também pode redirecionar isso com 2> , pois stderr é o identificador de arquivo 2. Você pode redirecionar stdout e stderr como &> ou pode redirecionar stderr para stdout fazendo 2>&1
Você pode ler tudo sobre o redirecionamento aqui
Então, no seu exemplo, se você quiser que todos os erros, bem como o sucesso, acabem em blah , você pode fazer
whatis 'ls /bin' &> blah
ou, usando a sintaxe de subshell alternativa que é preferida atualmente:
whatis $(ls /bin) &> blah
Embora o /bin provavelmente não tenha um, tenha cuidado ao fazer coisas como essa. Os resultados de ls /bin estarão sujeitos à divisão de palavras, portanto, se algum arquivo contiver espaços, digamos, eles serão tratados como argumentos diferentes para whatis . É por isso que você é geralmente desencorajado a analisar a saída de ls (veja esta questão para uma discussão sobre isso)
você pode fazer o que você está tentando de maneira diferente, como
find /bin -maxdepth 1 -type f -exec whatis {} + &> blah
que vai olhar em /bin e não ir mais fundo (como o glob), em seguida, encontrar apenas arquivos (o argumento type f ) e para cada coisa que achar que vai executar whatis , então faça o mesmo redirecionamento tinha falado sobre.