将多个命令的输出重定向到文件

问题描述 投票:1回答:3

我同时在我的Linux shell中运行多个命令,例如

echo "Line of text 1" && echo "Line of text 2" && complexthing | xargs printf "complexspecifier"

我想将所有输出重定向到file1。我知道我可以在每个单独命令后添加>file1,但这看起来很笨重。我怎样才能做到这一点?

bash shell command-line command output
3个回答
6
投票
exec >file1   # redirect all output to file1
echo "Line of text1"
echo "Line of text2"
exec > /dev/tty  # direct output back to the terminal 

或者,如果您使用的是没有/dev/tty的机器,您可以:

exec 5>&1 > file1  # copy current output and redirect output to file1 
echo foo
echo bar
exec 1>&5 5>&-  # restore original output and close the copy

6
投票

如果您不需要在子shell中运行命令,则可以使用{ ... } > file

{ echo "Line of text 1" && echo "Line of text 2" && complexthing | xargs printf "complexspecifier"; } > file1

请注意,在{之前需要一个空格,在}之前需要一个分号,除非在最后一个命令之后有&或换行符。


1
投票

弄清楚了。您可以在命令周围使用括号,然后附加qazxsw poi:

>file1
© www.soinside.com 2019 - 2024. All rights reserved.