Ubuntu grep, find и т. Д.: Вывод «Разрешение отказано» и «Нет такого файла или каталога»

Когда я использую grep или find , меня всегда раздражают уведомления «Permission denied» и «No such file or directory», что-то вроде этого:

 johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn grep: ./lib/ufw/user6.rules: Permission denied grep: ./lib/ufw/user.rules: Permission denied grep: ./lib/init/rw/udev/watch/27: No such file or directory grep: ./lib/init/rw/udev/watch/26: No such file or directory grep: ./lib/init/rw/udev/watch/25: No such file or directory 

Как я могу избежать их и сделать это, поэтому я вижу только релевантные данные, то есть то, что я действительно ищу?

  • Как установить Linux на флеш-диск с файловой системой NTFS?
  • Является ли (Ubuntu) Linux алгоритмом копирования файлов лучше, чем Windows 7?
  • Ubuntu 10 на виртуальном поле в качестве сервера для хоста Windows 7
  • Установка Windows 7 на машине с двойной загрузкой
  • Как настроить VLAN в той же подсети, что и Ethernet
  • Как настроить сетевой менеджер Ubuntu / Linux для выборочного маршрутизации сетевого трафика через VPN?
  • Имя пользователя Bittorrent Sync
  • Как заставить мои клавиши Super (Windows Key) вести себя так же, как Ctrl / Alt / Shift в Linux
  • 4 Solutions collect form web for “Ubuntu grep, find и т. Д.: Вывод «Разрешение отказано» и «Нет такого файла или каталога»”

    С grep вы можете указать флаг -s, который делает в значительной степени то, что сказал @ortang

    -s, –no-messages Подавлять сообщения об ошибках о несуществующих или нечитаемых файлах. Замечание о переносимости: в отличие от GNU grep, 7-е издание Unix grep не соответствовал POSIX, поскольку ему не хватало опции -q и его -s, как и опция -q GNU grep. В графе greg также не было -q, но его опция -s вела себя как GNU grep. Переносимые сценарии оболочки должны избегать как -q и -s, а затем перенаправлять стандартный и вывод ошибок в / dev / null.

    С нахождением, насколько я знаю, ответ @ortangs является лучшим. что-то вроде

    find / -name "myfile" -type f -print 2>/dev/null

    Попробуйте перенаправить stderr в /dev/null .

     johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn 

    Перенаправление strerr в /dev/null (aka black hole ) – хороший способ подавления разрешенных отказов.

    Однако обратите внимание, что эта рана не только подавляет permission denied но и ВСЕ сообщения об ошибках.

    Если вы хотите сохранить сообщения об ошибках, отличные от permission denied то вы можете сделать что-то вроде этого –

     grep -rnP 'YII_CORE_PATH' ./ 2>&1 | grep -v 'permission denied' > error.log 

    Если вы не захотите их сохранить, то следующее будет просто отлично –

     grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn 
     johndoe@johndoe-desktop:/$ sudo grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn 

    Используйте команду sudo чтобы поднять команду, чтобы иметь административные привилегии.

    Давайте будем гением компьютера.