18 votes

Ubuntu grep, find etc : "Permission refusée" et "Aucun fichier ou répertoire de ce type".

Lorsque j'utilise grep ou find En revanche, je suis toujours agacé par les messages "Permission refusée" et "Aucun fichier ou répertoire de ce type", qui ressemblent à ce qui suit :

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

Comment puis-je les éviter et faire en sorte de ne voir que les données pertinentes, c'est-à-dire celles que je recherche vraiment ?

26voto

Micheal Earl Points 41

Avec grep, vous pouvez spécifier l'option -s qui fait à peu près ce que @ortang a dit

-s, --no-messages Supprime les messages d'erreur concernant les fichiers inexistants ou illisibles. Note sur la portabilité : contrairement à GNU grep, 7th Edition Unix grep n'est pas conforme à POSIX. n'était pas conforme à POSIX, car il n'avait pas l'option -q et son option -s se comportait comme l'option -q de GNU grep. Le grep de style USG n'avait pas non plus l'option -q, mais son option -s se comportait comme le grep de GNU. Portable Shell Shell devraient éviter à la fois -q et -s et devraient rediriger les sorties standard et d'erreur vers /dev/null instead. d'erreur vers /dev/null.

Pour autant que je sache, la réponse de @ortangs est la meilleure. quelque chose comme

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

6voto

Lorcan O'Neill Points 101

Essayez de rediriger stderr への /dev/null .

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

5voto

Matt Points 381

Réorientation de la strerr への /dev/null (alias black hole ) est un bon moyen de supprimer les erreurs de refus de permission.

Toutefois, il convient de noter que cette blessure ne supprime pas seulement les permission denied messages mais TOUS les messages d'erreur.

Si vous souhaitez conserver les messages d'erreur autres que le permission denied alors vous pouvez faire quelque chose comme ceci -

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

Si vous ne souhaitez pas les conserver, les éléments suivants conviendraient parfaitement -

grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn

3voto

Nurlan Points 156
johndoe@johndoe-desktop:/$ sudo grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn

Utiliser le sudo afin d'élever la commande au rang de privilège administratif.

0voto

Fluffball Points 1

L'utilisation de "|&" avant grep -v permet d'y remédier, par exemple

grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn |& grep -v 'permission denied'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X