我同时在我的Linux shell中运行多个命令,例如
echo "Line of text 1" && echo "Line of text 2" && complexthing | xargs printf "complexspecifier"
我想将所有输出重定向到file1
。我知道我可以在每个单独命令后添加>file1
,但这看起来很笨重。我怎样才能做到这一点?
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
如果您不需要在子shell中运行命令,则可以使用{ ... } > file
:
{ echo "Line of text 1" && echo "Line of text 2" && complexthing | xargs printf "complexspecifier"; } > file1
请注意,在{
之前需要一个空格,在}
之前需要一个分号,除非在最后一个命令之后有&
或换行符。
弄清楚了。您可以在命令周围使用括号,然后附加qazxsw poi:
>file1