我想将流程的标准输出和标准错误重定向到单个文件。我在巴什怎么做?


当前回答

看看这里。应该是:

yourcommand &> filename

它将标准输出和标准错误重定向到文件名。

其他回答

奇怪的是,这是有效的:

yourcommand &> filename

但这会产生语法错误:

yourcommand &>> filename
syntax error near unexpected token `>'

您必须使用:

yourcommand 1>> filename 2>&1
do_something 2>&1 | tee -a some_file

这会将标准错误重定向到标准输出,将标准输出重定向到some_file并将其打印到标准输出。

bash your_script.sh 1>file.log 2>&1

1> log指示shell将标准输出发送到file.log文件,2>&1告诉它将标准错误(文件描述符2)重定向到标准输出(文件描述符1)。

注意:正如liw.fi指出的那样,顺序很重要,2>&11>file.log不起作用。

“最简单”的方法(仅限Bash 4):

ls * 2>&- 1>&-

对于tcsh,我必须使用以下命令:

command >& file

如果使用命令&>文件,它将给出“无效空命令”错误。