find без "Permission denied"
В linux-командах удобно использовать перенаправление потоков - stdin/stdout - либо подавая на вход данные из файла, либо наоборот, сохраняя результат в файл. Но есть ещё третий поток (правда под номером 2 - нумерация начинается с 0) - stderr. Использовал его считанные разы - но есть одна команда, которую без перенаправления stderr практически не использую.
Частая ситуация - зашёл на сервер, знаешь что где-то есть нужный скрипт (сегодня искал kafka-topics.sh), но вот где именно он? Напрашивается “find где_искать -name имя_файла” и к примеру для поиска в домашней директории этого будет достаточно. Но вот если где конкретно искать не знаешь и указываешь корень, а на сервер зашёл не под рутом - то команда выведет длинющую портянку сообщений наподобие “find: /Library/Application Support/: Permission denied”. Будут перечислены все директории, к которым у вас нет доступа, и где-то в этом списке одна маленькая строчка с найденным файлом
С переадресацией сообщений об ошибке - мусорного вывода не будет, только искомый результат
find / -name kafka-topics 2>/dev/null