o tempo interno do bash aceita% E - o que está acontecendo?

o tempo interno do bash aceita% E - o que está acontecendo?

A página de manual do bash lista três e apenas três códigos de formato reconhecidos pela versão interna do shell time: %Rpara o tempo real, %Upara o tempo gasto no espaço do usuário e %Spara o tempo gasto em chamadas do sistema. Portanto, o seguinte comportamento é confuso, para dizer o mínimo:

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

Claramente algo está sendo deixado de fora da página de manual. O embutido timeé reconhecer %Ee %P. Porém verifiquei todas as outras letras maiúsculas e minúsculas e nenhuma delas é reconhecida, exceto lcomo modificador:

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

Estou curioso para entender o que está acontecendo aqui - isso é realmente apenas uma omissão na página de manual ou há algo estranho na minha festa? Idealmente, alguém pode me indicar alguma documentação que explique isso? Estou usando o bash 4.2.48(1) no Gentoo amd64 estável, se for importante.

Responder1

Deseção de execute_cmd.cdebash-4.2+dfsgque trata de 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;
  }

Portanto, pelo exposto, parece que %Esignifica o mesmo que %R: tempo decorrido (real).

Eu vi algo semelhante no GNU sed. A -ropção está documentada como habilitando expressões regulares estendidas do sed. Um recurso não documentado é que -Efaz a mesma coisa. Neste caso, o propósito é claro: isto fornece compatibilidade com o sinalizador que o BSD sedusa para regex estendido. Uma possível razão para mantê-lo sem documentação seria que ele permite ao GNU a opção de usá-lo -Epara outra coisa no futuro. As razões para permitir %Eo TIMEFORMAT, mas mantê-lo sem documentação, podem ser semelhantes.

informação relacionada