“time time.txt” se recusa a trabalhar propriamente

0

Acabei de aprender os comandos do Linux. Eu estava experimentando com o comando > , que, tanto quanto eu entendo, faz o comando antes de gravar sua saída para o arquivo após o sinal. Minha percepção, no entanto, parece ser diferente do comportamento de time > time.txt :

nagy@nagy-VirtualBox ~/Dokumentumok/random $ date
2016. márc. 20., vasárnap, 18.14.58 CET
nagy@nagy-VirtualBox ~/Dokumentumok/random $ time

real    0m0.000s
user    0m0.000s
sys 0m0.000s
nagy@nagy-VirtualBox ~/Dokumentumok/random $ date > date.txt
nagy@nagy-VirtualBox ~/Dokumentumok/random $ time > time.txt

real    0m0.000s
user    0m0.000s
sys 0m0.000s
nagy@nagy-VirtualBox ~/Dokumentumok/random $ cat date.txt
2016. márc. 20., vasárnap, 18.15.21 CET
nagy@nagy-VirtualBox ~/Dokumentumok/random $ cat time.txt
nagy@nagy-VirtualBox ~/Dokumentumok/random $

Assim, ao que parece, enquanto date > date.txt funciona como esperado, o > , por incrível que pareça para mim, falha com time > time.txt . Alguém pode explicar isso?

Isso aconteceu em uma máquina virtual Linux Mint 14.3 hospedada pelo Windows 10.

    
por Neinstein 20.03.2016 / 19:37

1 resposta

2

O comando time não faz o que você acha que faz. De fato, uma vez que seu propósito é cronometrar a execução de outro comando, executá-lo sem argumentos (sem comando para tempo) não faz muito sentido. (Aparentemente ainda funciona sem reclamação!)

O efeito específico que você está vendo aqui é que time exibe suas estatísticas no erro padrão, não na saída padrão (para evitar interferir na saída de qualquer coisa que você esteja cronometrando). Redirecionar a saída padrão não tem efeito no canal de erro padrão. Tente isso:

time ls 2>time.txt

... onde você está redirecionando o erro padrão, não a saída padrão. A saída de ls é exibida como de costume (a saída padrão não é redirecionada), mas a saída de time no erro padrão vai para o arquivo, que é o que eu acho que você estava tentando alcançar.

    
por 20.03.2016 / 19:43