o tempo de embutimento de bash aceita% E - o que está acontecendo?

4

A página man bash lista três e apenas três códigos de formato reconhecidos pela versão integrada do shell de time : %R para o tempo real, %U para o tempo gasto no espaço do usuário e %S para o tempo gasto em chamadas do sistema. Então, 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

É evidente que algo está sendo deixado de fora da página do manual. O time incorporado está reconhecendo %E e %P . No entanto, verifiquei todas as outras letras maiúsculas e minúsculas e nenhuma delas foi reconhecida, exceto l como um 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 é apenas uma omissão na página man, ou há algo estranho sobre o meu bash? Idealmente, alguém pode me indicar alguma documentação que explica isso? Estou usando o bash 4.2.48 (1) no Gentoo amd64 estável, se for importante.

    
por David Z 15.10.2014 / 04:34

1 resposta

3

Na seção de execute_cmd.c de bash-4.2+dfsg que lida com 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;
  }

Assim, acima, parece que %E significa o mesmo que %R : tempo decorrido (real).

Eu vi algo similar no GNU sed . A opção -r está documentada como habilitando as expressões regulares estendidas do sed. Um recurso não documentado é que -E faz a mesma coisa. Nesse caso, o objetivo é claro: isso fornece compatibilidade com o sinalizador que o BSD sed usa para regex estendido. Uma possível razão para mantê-lo em situação irregular é permitir ao GNU a opção de usar -E para outra coisa no futuro. As razões para permitir %E em TIMEFORMAT, mas mantê-lo em situação irregular, podem ser semelhantes.

    
por 15.10.2014 / 05:33

Tags