Sí, puedes grep /dev/sda1y /procprobablemente no quieras. Con más detalle:
Sí, puede ejecutar grep el contenido binario de /dev/sda1. Pero, con los discos duros grandes modernos, esto llevará mucho tiempo y es probable que el resultado no sea útil.
Sí, puede manipular el contenido, /procpero tenga en cuenta que la memoria de su computadora está asignada allí como archivos. En una computadora moderna con gigabytes de RAM, esto llevará mucho tiempo y, nuevamente, el resultado probablemente no sea útil.
Como excepción, si está buscando datos en un disco duro con un sistema de archivos dañado, puede ejecutarlo grep something /dev/sda1como parte de un intento de recuperar los datos del archivo.
Otros archivos problemáticos en /dev
Los discos duros y las particiones del disco duro debajo /devpueden, si uno tiene suficiente paciencia, agrietarse. Otros archivos (hat hat: user2313067 ), sin embargo, pueden causar problemas:
/dev/zeroes un archivo de longitud infinita. Afortunadamente, grep(al menos la versión GNU) es lo suficientemente inteligente como para omitirla:
$ grep something /dev/zero
grep: input is too large to count
/dev/randomy /dev/urandomtambién son infinitos. El comando grep something /dev/randomse ejecutará para siempre a menos que grepse indique que se detenga.
Puede ser útil para grep /dev/urandomal generar contraseñas. Para obtener, por ejemplo, cinco caracteres alfanuméricos aleatorios:
$ grep --text -o '[[:alnum:]]' /dev/urandom | head -c 10
G
4
n
X
2
Esto no es infinito porque, después de haber recibido suficientes caracteres, headcierra la tubería haciendo que grep termine.
Bucles infinitos
"... los enlaces ... crean bucles infinitos cuando se atraviesan ..."
Grep (al menos la versión GNU) es lo suficientemente inteligente como para no hacer eso. Consideremos dos casos:
Con la -ropción, grep no sigue enlaces simbólicos a menos que se especifiquen explícitamente en la línea de comando. Por lo tanto, los bucles infinitos no son posibles.
Con la -Ropción, grep hace seguir enlaces simbólicos sino que los cheques y se niega a quedar atrapado en un bucle. Para ilustrar:
$ mkdir a
$ ln -s ../ a/b
$ grep -R something .
grep: warning: ./a/b: recursive directory loop
Excluyendo directorios problemáticos de grep -r
Por otro lado, grepproporciona una facilidad limitada para evitar que grep busque ciertos archivos o directorios. Por ejemplo, puede excluir todos los directorios nombrados proc, sysy devde búsqueda recursiva de grep con:
grep --exclude-dir proc --exclude-dir sys --exclude-dir dev -r something /
Alternativamente, podemos excluir proc, sysy devel uso de globos largos de bash:
shopt -s extglob
grep -r something /!(proc|sys|dev)
grepbusca un archivo/procque conduce a la memoria asignada, ¿podría suceder quegrepgolpee un EOF dentro de la memoria (aleatoria) e interprete los siguientes datos como un nuevo nombre de archivo para buscar? Empecé a leer elgrepcódigo fuente, pero supongo que no veré demasiado en él./devprobable que el grepping nunca termine cuando grep comienza a escanear/dev/zeroo similar. No estoy seguro si tales archivos existen en/proco/sys./dev/zero, buscará/dev/randompara siempre a menos que se detenga. Respuesta actualizada