Baru-baru ini saya menerima find
one-liner ini, tetapi saya tidak dapat menjelaskan dari mana perbedaan dua di bawah ini:
Contoh 1
[root@centos share]# find . -exec grep -i "madis" {} /dev/null \;
./names:Madison Randy:300:Product Development
Contoh 2
[root@centos share]# find . -exec grep -i "madis" {} \;
Madison Randy:300:Product Development
Seperti yang Anda lihat, pada file pertama ada file spesifik yang berasal dari string ini dan sejauh ini saya benar-benar tidak dapat mengetahui mengapa ini terjadi.
/dev/null
adalah untuk memastikan bahwa apa pun yang grep-ed tidak akan ditemukan dalam file (kosong)/dev/null
, jadi hanya lokasi yang benar yang dihasilkan"/dev/null
Anda tidak perlu membuang waktu mencari file dummy yang tidak kosong. Dan akhirnya, niat mencari/dev/null
jelas bagi mereka yang akrab dengan idiom ini.man grep
:Perbedaan hasil dari grep dipanggil dengan satu atau dua argumen file dalam dua kasus. Alih-alih menambahkan
/dev/null
Anda bisa menelepongrep
dengan argumen-H
. Mungkin/dev/null
perilakunya lebih banyak didukung.sumber
grep -H
tidak portabel -/dev/null
triknya bekerja tanpa GNU grep.Contoh pertama setara dengan menjalankan grep pada dua file untuk setiap file yang ditemukan sebagai hasil dari
find
ekspresi. Misalnya, jikafind
temuan tiga filea.txt
,b.txt
danc.txt
kemudiangrep
akan dijalankan sebagaiYang
grep
akan menampilkan nama file yang cocok dengan output. Karena tidak ada yang cocok dengan / dev / null, dijamin nama file dari file pertama akan dicetak jika cocok.Sedangkan, contoh kedua setara dengan
Dalam hal ini nama file tidak akan dicetak untuk pertandingan karena hanya ada satu argumen.
sumber