Saya menemukan jika saya mencari menggunakan grep tanpa menentukan jalur, seperti grep -r 'mytext'
itu butuh waktu lama. Sementara itu jika saya mencari dengan jalur yang ditentukan grep -r 'mytext' .
itu langsung menemukan apa yang saya butuhkan. Jadi, saya ingin tahu, dalam bentuk pertama, di direktori mana grep mencari?
UDATE: versi grep: grep (GNU grep) 2.10
foomytextbar
(diikuti dengan Enter) setelah berjalangrep -r 'mytext'
.grep
itu. Dengan GNUgrep
saya gunakan di Linuxgrep -r 'mytext'
dangrep -r 'mytext' .
melakukan hal yang sama: pencarian secara rekursif dimulai dari direktori saat ini. Ketika-r
saklar digunakan, GNUgrep
tidak mencari STDIN.grep
2.12: pastebin.com/L4my26QS Sementara itu saya menemukan ini di file NEWS mengenai versi 2.11 (2012-03-02): "Jika tidak ada operan file yang diberikan, dan opsi baris perintah -r atau opsi setara diberikan , grep sekarang mencari direktori yang berfungsi. Sebelumnya grep mengabaikan -r dan mencari input standar secara tidak rekursif. -r yang ditemukan di GREP_OPTIONS tidak memiliki efek baru ini. "Jawaban:
Sebenarnya itu tidak mencari di mana pun. Ia menunggu input dari input standar.
Coba ini:
ketika Anda mengetik baris yang berisi "foo" dan tekan enter baris ini akan diulang jika tidak kursor akan dipindahkan ke baris baru tetapi grep tidak akan mencetak apa pun.
sumber
grep -r PATTERN
dengan versi GNU grep yang lebih baru tidak akan membaca input standar tetapi mencari pola di direktori saat ini (lihat komit ). Perubahan ini masuk akal karena Anda mungkin tidak ingin mencari input standar ketika Anda menentukan-r
flag.Persis seperti jawaban sebelumnya oleh Maciek mengatakan:
Namun Anda dapat menulis ke stdin dari program yang sudah berjalan jika Anda memiliki / proc tersedia dengan mem-pipkan data ke deskriptor pertama ke-0:
Dalam satu terminal
dan melihatnya menunggu tanpa batas ... Di terminal lain ketik ini:
lihat terminal cetak halo pertama dan nama pengguna Anda.
sumber