我正在尝试记录执行命令的时间,所以我是通过在bash中使用内置time
命令来实现的。我还希望将stderr和stdout同时重定向到日志文件。但是,它似乎没有工作,因为stderr只是溢出到我的终端上。
这是命令:
rm -rf doxygen
mkdir doxygen
bash -c 'time "/cygdrive/d/Program Files/doxygen/bin/doxygen.exe" Doxyfile > doxygen/doxygen.log 1>&2' genfile > doxygen/time 1>&2 &
我在这里做错了什么?
答案 0 :(得分:4)
您使用1>&2
代替2>&1
。
随着名字长度的减少,你正试图运行:
bash -c 'time doxygen Doxyfile > doxygen.log 1>&2' genfile > doxygen.time 1>&2 &
> doxygen.log
将标准输出发送到文件; 1>&2
然后改变主意并将标准输出发送到标准错误发生的同一位置。与外部重定向相似。
如果您使用:
bash -c 'time doxygen Doxyfile > doxygen.log 2>&1' genfile > doxygen.time 2>&1 &
然后将标准错误发送到标准输出所在的位置 - 两次。
顺便提一下,您是否意识到genfile
用作$0
运行的脚本的bash -c '…'
?我不相信你的剧本需要它。要看到这一点,请尝试:
bash -c 'echo 0=$0; echo 1=$1; echo 2=$2' genfile jarre oxygene
运行时,会产生:
0=genfile
1=jarre
2=oxygene