让我首先使用在linux bash环境下无效的命令来演示场景。
$ timed-run prog1 1>/dev/null 2>out.tmp
在上面的例子中,我想将程序'prog1'的输出重定向到/ dev / null和out.tmp文件。但是这个命令会将timed-run的输出(如果有的话)重定向到out.tmp。
任何帮助将不胜感激。
答案 0 :(得分:0)
从一个简单的例子来看,我恰恰相反。
$ time ls 1> foo 2> bar
real 0m0.002s
user 0m0.004s
sys 0m0.000s
$ more foo
<show files>
$ more bar
<empty>
$
ls的输出被重定向,时间输出不是!
答案 1 :(得分:0)
这里的问题是定时运行而不是bash。如果使用标准时间命令运行相同的命令替换timed-run,则按预期工作。主要是定时运行需要再次通过shell运行prog1的参数。如果是shell脚本,则可以使用eval命令执行此操作。例如:
#!/bin/sh
echo here is some output
echo $*
eval $*
现在运行
timed-run prog1 '1>/dev/null' '2>output.tmp'
答案 2 :(得分:0)
如何使用sh -c 'cmd'
如此:
time -p sh -c 'ls -l xcvb 1>/dev/null 2>out.tmp'
time -p sh -c 'exec 0</dev/null 1>/dev/null 2>out.tmp; ls -l xcvb'
# in out.tmp:
# ls: xcvb: No such file or directory