Lorsque j'utilise grep
ou find
, je suis toujours ennuyé par la "permission refusée" et "aucun fichier de type ou répertoire", quelque chose comme ça:
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 le faire, donc je ne vois que des données pertinentes, c'est-à-dire quelque chose que je cherche vraiment?
avec grep, vous pourriez spécifier le drapeau -s qui fait à peu près ce que @tortang a dit
- S, --NO-Messages Supprimer des messages d'erreur sur des fichiers inexistants ou illisibles. Note de portabilité: Contrairement à GNU Grep, la 7ème édition Unix Grep n'a pas confié à POSIX, car elle manquait -q et son option de SS -S s'est comportée comme GNU Grep - q Option. Le grep de style USG est également manqué de -q mais son option -s est comporté comme GNU grep. Les scripts de shell portable doivent éviter les deux -q and -s et doivent rediriger la standard et la sortie d'erreur vers/dev/null à la place.
avec la recherche aussi loin que je sais @ortangs, la réponse est la meilleure. quelque chose comme
find / -name "myfile" -type f -print 2>/dev/null
Essayez de rediriger stderr
à /dev/null
.
johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn
Redirecter le strerr
à /dev/null
(A.k.a black hole
) est un bon moyen de supprimer la permission de refuser des erreurs.
Cependant, notez que cette blessure supprime non seulement permission denied
messages mais [~ # ~] tous [~ # ~ ~] Messages d'erreur.
Si vous souhaitez conserver des messages d'erreur autres que permission denied
alors vous pouvez faire quelque chose comme ça -
grep -rnP 'YII_CORE_PATH' ./ 2>&1 | grep -v 'permission denied' > error.log
Si vous ne souhaitez pas conserver ceux-ci, les suivants seraient tout simplement bien -
grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn
johndoe@johndoe-desktop:/$ Sudo grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn
Utilisez la commande Sudo
pour élever la commande pour avoir des privilèges administratifs.