linux:time命令,将stdout和stderr重定向到日志文件并在终端中显示

时间:2015-02-04 18:46:38

标签: linux bash

我知道是否要重定向命令的输出和" time"到文件我可以这样做:

(time python myscript.py) &> log.txt

这个版本的tee是什么,所以一切都会显示在终端中?另一个问题是如何将标准错误从我的命令python myscript.py重定向到log.txt

3 个答案:

答案 0 :(得分:2)

这是另一种选择,使用流程替换(在Bash中):

{ time python myscript.py; } &> >(tee log.txt)

我可以看到两个好处:语法更接近您的原始命令(因此,可以说,更容易记住):只需通过进程替换替换您的文件。另一个好处是,在命令退出后,命令的返回码将在变量$?中可用,与管道情况不同。

注意你没有在子shell (...)中运行命令,使用{...}的命令分组就足够了(注意大括号周围的空格和尾随的分号) )。

这个tee的标准输出,stderr和time的输出。

答案 1 :(得分:1)

(time python myscript.py) 2>&1 | tee log.txt

2>&1会在将stderr传送到tee之前将其重定向到stdout。

答案 2 :(得分:0)

tee等效值为(bash

(time python myscript.py) |&  tee log.txt