我正在同时运行多个Linux shell命令,例如:
echo "Line of text 1" && echo "Line of text 2" && complexthing | xargs printf "complexspecifier"
我希望将所有输出重定向到file1
文件。我知道可以在每个单独的命令后面添加>file1
,但这样看起来很笨重。有什么更好的方法吗?
我正在同时运行多个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
{ ... } > file
:{ echo "Line of text 1" && echo "Line of text 2" && complexthing | xargs printf "complexspecifier"; } > file1
&
或换行符,否则您需要在{
后面添加空格并在}
前添加分号。;
。重要的是不要忘记它,例如当管道连接两个命令时 :-) - hornetbzz>file1
:(echo "Line of text 1" && echo "Line of text 2" && complexthing | xargs printf "complexspecifier") >file1
printf
中是徒劳的,因为它不会从其标准输入读取。 - codeforesterxargs printf
。已修正。 - MD XF{ ...; }
和( ... )
之间的区别,然后做出明智的选择。 - tripleee
5
是什么?为什么不是6
或4
?如果有文档链接就更好了。谢谢。 - Leonid