How do I get the output of the time bash command?
Anthony
anthoq88 at gmail.com
Wed Jan 27 20:53:31 UTC 2021
On Wednesday, 27 January 2021 at 09:58:18 UTC, Arafel wrote:
> On 27/1/21 10:35, Anthony wrote:
>>
>> I'm trying to read the timed output of a pipeShell command but
>> it only results in empty output.
>>
>> Does anyone know why this is?
>>
>>
>> ```
>> auto p = pipeShell("time ls");
>>
>> foreach(str; p.stdout.byLine) {
>> writefln("%s",str);
>> }
>> ```
>
> I'm not sure why you get an empty output, you should get at
> least the `ls` output unless it's an empty directory (or one
> with only "dot" files).
>
> However, in any case `time` returns the timing information
> through `stderr`, not `stdout`[1]. You can try [2,3] (untested):
>
> ```
> auto p = pipeShell("time ls", Redirect.stderrToStdout);
> ```
>
> Best,
>
> A.
>
> [1]: https://linux.die.net/man/1/time
> [2]: https://dlang.org/library/std/process/pipe_shell.html
> [3]: https://dlang.org/library/std/process/redirect.html
Thanks! I think this was the issue.
Turns out that pipeShell uses sh not bash so the "time" program
isn't available.
When I printed stderr, it showed me the error.
More information about the Digitalmars-d-learn
mailing list