was ist der maximale Zeichenbereich von grep in Bash?

was ist der maximale Zeichenbereich von grep in Bash?

Was ist der maximale Zeichenbereich von grep in Bash? Wie lang kann eine Zeichenfolge als Eingabe für die Suche mit dem Befehl grep sein?

Antwort1

Die maximale Länge der Argumente der exec()Funktion (die von der Shell zum Starten eines Prozesses verwendet werden) wird durch den Wert ARG_MAXim limits.hHeader definiert. Dieser Wert ist auch über den getconfBefehl verfügbar. Auf meinem System:

$ getconf ARG_MAX
262144

Das bedeutet, dass die komplette Kommandozeile (nachdem alle Variablensubstitutionen etc. abgearbeitet wurden)einschließlich aller Umgebungsvariablen und ihrer Werte, darf 256 KiB nicht überschreiten, damit die Shell es garantiert akzeptiert.

POSIX garantiert, dass ARG_MAXes mindestens 4096 sind.

Eine Linux-spezifische Erläuterung zu ARG_MAXfinden Sie unterAntwort von Stéphane Chazelas auf eine verwandte Frage.

Eine ausführliche Diskussion zu diesem Thema finden Sie unterhttps://www.in-ulm.de/~mascheck/various/argmax/(externer Link).


Mit grep -f patterns filekönnen Sie die maximale Länge der Befehlszeile umgehen, indem Sie die gewünschten Muster grepin die Datei einfügen patterns. Die Anzahl der Muster wird dann durch Ihren verfügbaren RAM begrenzt und nicht durch eine systembedingte Begrenzung der Befehlszeilenlänge.

verwandte Informationen