Pertanyaan Ubuntu grep, temukan dll: "Izin ditolak" dan "Tidak ada file atau direktori" output


Ketika saya menggunakan grep atau findSaya selalu merasa terganggu oleh pemberitahuan "Izin ditolak" dan "Tidak ada file atau direktori", sesuatu seperti ini:

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

Bagaimana saya bisa menghindarinya dan membuatnya jadi saya hanya melihat data yang relevan, yaitu sesuatu yang benar-benar saya cari?


16
2018-01-24 17:08


asal


Terkait: stackoverflow.com/a/25234419/54964 - Léo Léopold Hertz 준영


Jawaban:


dengan grep Anda bisa menspesifikasikan flag -s yang cukup banyak yang dikatakan @ortang

-s, --no-messages                 Menekan pesan kesalahan tentang file yang tidak ada atau tidak dapat dibaca. Catatan portabilitas: tidak seperti GNU grep, 7th Edition Unix grep lakukan   tidak sesuai dengan POSIX, karena tidak memiliki -q dan opsi -s nya                 berperilaku seperti opsi GNU grep -q. Grep gaya USG juga tidak memiliki -q tetapi opsi -snya berperilaku seperti GNU grep. Shell portabel   skrip harus menghindari kedua-q dan -s dan harus mengarahkan standar dan                 output kesalahan ke / dev / null sebagai gantinya.

dengan menemukan sejauh yang saya tahu jawaban @ortangs adalah yang terbaik. sesuatu seperti

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


21
2018-01-24 18:51





Coba alihkan stderr untuk /dev/null.

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

6
2018-01-24 17:54





Mengarahkan ulang strerr untuk /dev/null (a.k.a black hole) adalah cara yang baik untuk menekan izin ditolak kesalahan.

Namun, perhatikan bahwa luka ini tidak hanya menekan permission denied pesan tapi SEMUA pesan kesalahan.

Jika Anda ingin menyimpan pesan kesalahan selain permission denied maka Anda dapat melakukan sesuatu seperti ini -

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

Jika Anda tidak ingin mempertahankannya maka berikut ini akan baik-baik saja -

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

5
2018-01-24 18:15



Anda tidak dapat meng-grep sesuatu yang telah dialihkan ke / dev / null. - choroba
@choroba Telah mengoreksi jawabannya. Dimaksud menulis 2>&1 dari pada 2> /dev/null untuk saran pertama. - jaypal singh
Ya, Anda harus mengalihkan stderr untuk stout pertama. - ortang


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

Menggunakan sudo perintah untuk meningkatkan perintah untuk memiliki hak administratif.


3
2018-01-25 10:22





Menggunakan "| &" sebelum grep -v akan menghadapinya, mis.

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

0
2017-07-31 20:21