¿Cuál es el rango máximo de caracteres de grep en bash?

¿Cuál es el rango máximo de caracteres de grep en bash?

¿Cuál es el rango máximo de caracteres de grep en bash? ¿Cuánto tiempo puede tener una cadena como entrada para buscar usando el comando grep?

Respuesta1

La longitud máxima de los argumentos de la exec()función (utilizada por el shell para iniciar un proceso) está definida por el valor de ARG_MAXen el limits.hencabezado. Este valor también está disponible a través del getconfcomando. En mi sistema:

$ getconf ARG_MAX
262144

Esto significa que la línea de comando completa (después de que se hayan procesado todas las sustituciones de variables, etc.),incluyendo cualquier variable de entorno y sus valores, no debe exceder los 256 KiB para que se garantice que el shell lo acepte.

POSIX garantiza que ARG_MAXsea al menos 4096.

Para una discusión específica de Linux sobre ARG_MAX, consulteLa respuesta de Stéphane Chazelas a una pregunta relacionada.

Para una discusión en profundidad sobre este tema verhttps://www.in-ulm.de/~mascheck/various/argmax/(Enlace externo).


Puede grep -f patterns fileomitir la longitud máxima de la línea de comando colocando los patrones que desee grepen el archivo patterns. El límite para la cantidad de patrones será entonces la RAM disponible en lugar de un límite impuesto por el sistema en la longitud de la línea de comando.

información relacionada