将调试和STDOUT重定向到不同的文件

时间:2013-10-06 12:09:00

标签: linux bash shell redirect

有没有办法将我的调试输出重定向到文件和屏幕上的普通STDOUT。

$ cat test1.sh
#!/bin/bash

echo HAI
echo BYE

$ sh -x test1.sh
+ echo HAI
HAI
+ echo BYE
BYE

我想将调试输出重定向到屏幕上的文件和正常输出。

$ sh -x test1.sh >file1
+ echo HAI
+ echo BYE

但我可以将输出重定向到文件并在屏幕上结束调试输出。

3 个答案:

答案 0 :(得分:3)

使用2>

$ sh -x test1.sh 2> /dev/null
HAI
BYE

请参阅https://stackoverflow.com/a/818284/1907906

答案 1 :(得分:2)

linux系统上的默认文件描述符是:

stdin - 0
stdout - 1
stderr - 2

重定向到文件,

sh test1.sh 1> file

将错误(stderr)重定向到控制台(stdout)

sh test1.sh 2>&1

答案 2 :(得分:0)

我使用别名来提供完整的命令并使用以下方式

$ alias mytest='sh -x test1.sh 2>out.test'
$ mytest
HAI
BYE
$ cat out.test
+ echo HAI
+ echo BYE

谢谢大家......