Tentei redirecionar a saída do comando time, mas não consegui:
$time ls > filename
real 0m0.000s
user 0m0.000s
sys 0m0.000s
No arquivo, posso ver a saída do ls
comando, não a de time
. Explique por que não pude e como fazer isso.
shell
unix
time
io-redirection
abubacker
fonte
fonte
Respostas:
você pode redirecionar a saída de tempo usando,
Porque você precisa tomar (tempo ls) como um único comando para poder usar colchetes.
fonte
&>
favor, onde posso saber mais sobre isso?&>file
é análogo a>file 2>&1
. Ele direciona stdout e stderr.não há necessidade de iniciar o sub shell. Use um bloco de código também.
ou
fonte
2>
favor. Onde posso aprender sobre isso?O tempo de comando envia sua saída para STDERR (em vez de STDOUT). Isso ocorre porque o comando executado com o tempo normalmente (neste caso ls) tem saída para STDOUT.
Se você deseja capturar a saída do tempo, digite:
Isso captura apenas a saída de tempo, mas a saída de ls é normal para o console. Se você deseja capturar ambos em um arquivo, digite:
2> redireciona STDERR, &> redireciona ambos.
fonte
o tempo está embutido no shell e não tenho certeza se há uma maneira de redirecioná-lo. No entanto, você pode usar em
/usr/bin/time
vez disso, o que definitivamente aceita qualquer redirecionamento de saída.fonte
bash time mycmd 2>file
. Ou apenas ligue/usr/bin/time
como foi mencionado.Se você não quiser misturar a saída de
time
e o comando. Com o GNU time, você pode usar-o file
como:while
tim
é a saída do tempo,out
eerr
são stdout e stderr degrep
.fonte
O motivo pelo qual o redirecionamento parece não funcionar
time
é que ele é uma palavra reservada do bash (não um embutido!) Quando usado na frente de um pipeline. bash (1):Portanto, para redirecionar a saída de
time
, use chaves:Ou ligue para
/usr/bin/time
:fonte
Eu uso o redirecionamento do método stdout e stderr com chaves para teste.
O
&>>rpt
representa isso,>>rpt 2>&1
mas mais curto.As chaves irão executar um comando (s) no shell atual. Veja: man bash
fonte