Itu tidak ada hubungannya dengan grep- itu karena pipa |mengarahkan aliran output standar stdoutsedangkan Permission deniedpesan berada di aliran kesalahan standar stderr. Anda dapat mencapai hasil yang Anda inginkan dengan menggabungkan aliran menggunakan 2>&1(redirect aliran yang file descriptor-nya 2ke stream yang file descriptor-nya 1) sehingga stderrjuga stdoutdapat disalurkan ke input dari perintah grep
find / -name libGL.so.1 2>&1 | grep -v 'denied'
tetapi akan lebih biasa untuk membuang stderrsemuanya dengan mengarahkannya ke/dev/null
find / -name libGL.so.1 2>/dev/null
Menggunakan | & bukannya 2> & 1 |
Jika Anda melihat halaman manual Bash Anda mungkin akan melihat uraian ini:
Jika |&digunakan, kesalahan standar perintah terhubung ke input standar command2 melalui pipa; itu adalah singkatan 2>&1 |.
Jadi, Anda juga dapat menggunakan konstruk ini jika Anda ingin bergabung dengan STDERR dan STDOUT:
find / -name libGL.so.1 |& grep -v 'denied'
/foo/bar/denied/libGL.so.1, menggabungkanstdoutdanstderrkemudian memfilter akan menyembunyikan hasilnya