Die integrierte Zeit von Bash akzeptiert %E – was ist los?

Die integrierte Zeit von Bash akzeptiert %E – was ist los?

Die Manpage von Bash listet drei und nur drei Formatcodes auf, die von der integrierten Version der Shell erkannt werden time: %Rfür die Echtzeit, %Ufür die im Benutzerbereich verbrachte Zeit und %Sfür die in Systemaufrufen verbrachte Zeit. Das folgende Verhalten ist also gelinde gesagt verwirrend:

$ type time
time is a shell keyword
$ TIMEFORMAT="%E %P"
$ time sleep 1
1.002 0.00

Offensichtlich wurde auf der Manpage etwas ausgelassen. Das integrierte Attribut timeerkennt %Eund %P. Ich habe jedoch alle anderen Groß- und Kleinbuchstaben überprüft und keiner davon wird erkannt, außer lals Modifikator:

$ TIMEFORMAT="%lE %lS %lU %lR"
$ time sleep 1
0m1.001s 0m0.000s 0m0.000s 0m1.001s

Ich bin neugierig und möchte wissen, was hier vor sich geht. Handelt es sich hier wirklich nur um eine Auslassung in der Manpage oder stimmt mit meiner Bash etwas nicht? Kann mir im Idealfall jemand eine Dokumentation zeigen, in der das erklärt wird? Ich verwende Bash 4.2.48(1) auf Gentoo amd64 stabil, falls das wichtig ist.

Antwort1

Von demAbschnitt von execute_cmd.cvonbash-4.2+dfsgdas sich mit Folgendem beschäftigt TIMEFORMAT:

if (*s == 'R' || *s == 'E')
  len = mkfmt (ts, prec, lng, rs, rsf);
else if (*s == 'U')
  len = mkfmt (ts, prec, lng, us, usf);
else if (*s == 'S')
  len = mkfmt (ts, prec, lng, ss, ssf);
else
  {
    internal_error (_("TIMEFORMAT: `%c': invalid format character"), *s);
    free (str);
    return;
  }

Aus dem oben Gesagten geht also hervor, dass dies %Edasselbe bedeutet wie %R: verstrichene (echte) Zeit.

Ich habe etwas Ähnliches in GNU gesehen sed. Die -rOption ist als Aktivierung der erweiterten regulären Ausdrücke von sed dokumentiert. Eine nicht dokumentierte Funktion tut -Edasselbe. In diesem Fall ist der Zweck klar: Dies sorgt für Kompatibilität mit dem Flag, das BSD für erweiterte reguläre Ausdrücke verwendet. Ein möglicher Grund, es nicht zu dokumentieren, wäre, dass es GNU die Möglichkeit gibt , es in Zukunft für etwas anderes sedzu verwenden . Die Gründe dafür , TIMEFORMAT zuzulassen, es aber nicht zu dokumentieren, könnten ähnlich sein.-E%E

verwandte Informationen