>
перенаправляет только стандартный вывод ( stdout
), но когда whatis
не может найти информация о файле записывается в другой поток, stderr
. Вы также можете перенаправить это с помощью 2>
, поскольку stderr
является дескриптором файла 2. Вы можете перенаправить как stdout, так и stderr, например &>
, либо вы можете перенаправить stderr на stdout, выполнив 2> & 1
Вы можете прочитать все о перенаправлении здесь
Итак, в вашем примере, если вы хотите, чтобы все ошибки, а также успех, заканчивались на бла
вы можете использовать
whatis `ls /bin` &> blah
или, используя альтернативный синтаксис подоболочки, который предпочитается в наши дни:
whatis $(ls /bin) &> blah
хотя / bin
вряд ли будет иметь его, будьте осторожны, делая подобные вещи. Результаты ls / bin
будут подвергаться разделению на слова, поэтому, если какой-либо из файлов содержит, скажем, пробелы, они будут рассматриваться как разные аргументы для whatis
. Вот почему вам обычно не рекомендуется анализировать вывод ls
(см. этот вопрос для его обсуждения)
, вы можете делать то, что вы пытаетесь, иначе, например
find /bin -maxdepth 1 -type f -exec whatis {} + &> blah
, который будет искать в / bin
и не углубляться (как глобус), затем найдет только файлы (аргумент тип f
) и для каждой найденной вещи он выполнит whatis
, затем выполните то же перенаправление, о котором мы говорили.