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

Unix 将stdout、stderr和两者保存到3个单独的文件中,unix,shell,Unix,Shell,我正在使用ksh。在这个链接上,有一个将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 请给出建议。对我来说非常有用: $ ksh $ ps |

我正在使用ksh。在这个链接上,有一个将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

请给出建议。

对我来说非常有用:

$ 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

免费建议:不要使用那些谈论“高级shell技巧”的网站,这些网站甚至不会告诉你他们在谈论哪个shell。它们的语法不尽相同,不知道这些语法的人也没有资格编写高级技巧。好的,那么你能告诉我如何在ksh中实现这一点吗?你给我的免费建议真是太好了。我能修好它。只是两个支架之间需要留出空间。因此,以下内容现在可以正常工作:(/program.sh2>&11>&3|tee err.txt)3>&11>&2|tee out.txt)>mix.txt 2>&1