Когда я использую grep
или find
, меня всегда раздражают уведомления «Отказано в доступе» и «Нет такого файла или каталога», что-то вроде этого:
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
Как я могу избежать их и сделать так, чтобы я видел только соответствующие данные, то есть то, что я действительно ищу?
Ответы:
с помощью grep вы можете указать флаг -s, который делает то, что сказал @ortang
с найти, насколько я знаю, ответ @ortangs является лучшим. что-то вроде
find / -name "myfile" -type f -print 2>/dev/null
источник
Попробуйте перенаправить
stderr
на/dev/null
.источник
Перенаправление
strerr
к/dev/null
(он жеblack hole
) , это хороший способ подавления разрешения ошибки отказа.Однако обратите внимание, что эта рана подавляет не только
permission denied
сообщения, но и ВСЕ сообщения об ошибках.Если вы хотите сохранить сообщения об ошибках, отличных от
permission denied
этого, вы можете сделать что-то вроде этого -Если вы не хотите сохранять их, то все будет в порядке -
источник
2>&1
вместо2> /dev/null
первого предложения.stderr
вstout
первую очередь.Используйте
sudo
команду, чтобы поднять команду, чтобы иметь административные привилегии.источник
Использование «| &» до того, как с ним справится grep -v, например
источник