将stdout,stderr和两者保存到3个单独的文件中

时间:2011-07-21 11:09:46

标签: unix shell

我正在使用ksh。在此链接http://www.shelldorado.com/shelltips/advanced.html#redir上,有一个示例将stdout,stderr和两者保存到3个单独的文件中。

((./program 2>&1 1>&3 | tee ~/err.txt) 3>&1 1>&2 | tee ~/out.txt) > ~/mix.txt 2>&1

我试过了,但我收到了以下错误:

ksh: syntax error: `(' unexpected

请建议。

1 个答案:

答案 0 :(得分:2)

对我来说非常有用:

$ ksh
$ ps | grep "$$"
 6987 pts/6    00:00:00 ksh
$ cat program.sh
#!/bin/sh

echo "err" 1>&2
echo "out"
$ ((./program.sh 2>&1 1>&3 | tee err.txt) 3>&1 1>&2 | tee out.txt) > mix.txt 2>&1
$ cat out.txt
out
$ cat err.txt
err
$ cat mix.txt
err
out