Ya, Anda bisa grep
/dev/sda1
dan /proc
tetapi Anda mungkin tidak mau. Lebih detail:
Ya, Anda dapat menjalankan grep konten biner /dev/sda1
. Tetapi, dengan hard disk besar modern, ini akan memakan waktu yang sangat lama dan hasilnya tidak akan berguna.
Ya, Anda dapat mengambil konten /proc
tetapi perlu diketahui bahwa memori komputer Anda dipetakan di sana sebagai file. Pada komputer modern dengan RAM gigabytes, ini akan membutuhkan waktu lama untuk diraih dan, sekali lagi, hasilnya tidak akan berguna.
Sebagai pengecualian, jika Anda mencari data pada hard disk dengan sistem file yang rusak, Anda mungkin menjalankan grep something /dev/sda1
sebagai bagian dari upaya untuk memulihkan data file.
File bermasalah lainnya di /dev
Hard disk dan partisi hard disk di bawah /dev
dapat, jika seseorang memiliki cukup kesabaran, ditangkap. File lain (ujung hat: user2313067 ), bagaimanapun, dapat menyebabkan masalah:
/dev/zero
adalah file dengan panjang tak terbatas. Untungnya, grep
(setidaknya versi GNU) cukup pintar untuk melewatkannya:
$ grep something /dev/zero
grep: input is too large to count
/dev/random
dan /dev/urandom
juga tak terbatas. Perintah grep something /dev/random
akan berjalan selamanya kecuali grep
ditandai untuk berhenti.
Berguna untuk melakukan grep /dev/urandom
saat membuat kata sandi. Untuk mendapatkan, misalnya, lima karakter alfanumerik acak:
$ grep --text -o '[[:alnum:]]' /dev/urandom | head -c 10
G
4
n
X
2
Ini bukan tanpa batas karena, setelah menerima karakter yang cukup, head
menutup pipa yang menyebabkan grep berakhir.
Loop tak terbatas
"... tautan ... buat loop tak terbatas saat dilalui ..."
Grep (setidaknya versi GNU) cukup pintar untuk tidak melakukan itu. Mari kita pertimbangkan dua kasus:
Dengan -r
opsi ini, grep tidak mengikuti tautan simbolik kecuali mereka secara eksplisit ditentukan pada baris perintah. Oleh karena itu, loop tak terbatas tidak mungkin.
Dengan -R
opsi tersebut, grep memang mengikuti tautan simbolis tetapi memeriksa dan menolak untuk terjebak dalam satu lingkaran. Menggambarkan:
$ mkdir a
$ ln -s ../ a/b
$ grep -R something .
grep: warning: ./a/b: recursive directory loop
Tidak termasuk direktori yang bermasalah dari grep -r
Selain itu, grep
sediakan fasilitas terbatas untuk menghentikan grep dari mencari file atau direktori tertentu. Misalnya, Anda dapat mengecualikan semua direktori bernama proc
, sys
dan dev
dari pencarian rekursif grep dengan:
grep --exclude-dir proc --exclude-dir sys --exclude-dir dev -r something /
Atau, kita bisa mengecualikan proc
, sys
dan dev
menggunakan gumpalan diperpanjang bash:
shopt -s extglob
grep -r something /!(proc|sys|dev)
grep
mencari file/proc
yang mengarah ke memori yang dipetakan, mungkinkah itu mengenaigrep
EOF di dalam memori (acak), dan mengartikan data berikut ini sebagai nama file baru untuk dicari? Saya sudah mulai membacagrep
kode sumber, tapi saya rasa saya tidak akan melihat terlalu banyak di dalamnya./dev
mungkin tidak pernah berakhir karena grep mulai memindai/dev/zero
atau serupa. Tidak yakin apakah file tersebut ada di/proc
atau/sys
./dev/zero
, ia akan mencari/dev/random
selamanya kecuali dihentikan. Jawaban diperbarui.