Itu tidak ada hubungannya dengan grep
- itu karena pipa |
mengarahkan aliran output standar stdout
sedangkan Permission denied
pesan 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 2
ke stream yang file descriptor-nya 1
) sehingga stderr
juga stdout
dapat disalurkan ke input dari perintah grep
find / -name libGL.so.1 2>&1 | grep -v 'denied'
tetapi akan lebih biasa untuk membuang stderr
semuanya 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
, menggabungkanstdout
danstderr
kemudian memfilter akan menyembunyikan hasilnya