if重定向运算符多合一命令。(bash(
-
相同的重定向运算符
示例arg_1 > arg_2 > arg_3 > arg_4
-
不同的重定向运算符
示例arg_1 < arg_2 > arg_3 < arg_4 < arg_5 > arg_6
我知道命令中是否有一个重定向运算符如何工作。
但是如果在一个命令行中有多个重定向运算符,这些是如何工作的?
重定向是从左到右计算的。将>foo
视为stdout=foo。因此中的重定向
prog >foo >bar
对应于设置
stdout=foo
stdout=bar
,这意味着总的来说,stdout最终会重定向到bar(就像先将变量设置为一个值,然后再设置为某个不同的值时一样(,但由于将stdout设置为文件也有创建该文件的效果,因此foo和bar最终都会存在,即使不会将任何内容写入foo。
类似地,
prog >foo 2>&1 >bar
会做
stdout=foo
stderr=stdout
stdout=bar
stdout将转到bar,stderr将转到foo。当然,在实践中,您只需编写prog 2>foo >bar
即可达到此效果。