1, ls you no 2>&1 1>&2|egrep \* >file
2, (ls you no 2>&1) 1>&2|egrep \* >file
Who the shell is familiar with, this script, why does the execution result be different?
Answer the question of group friends
1, ls you no 2>&1 1>&2|egrep \* >file
The first 2>&1 the standard output of the pipe copied to 2, so 1 and 2 go the standard output, back 1>&2 because they are both standard output, the back of this copy actually does not work, so all the standard output has gone to the pipeline, and output to the file
2, (ls you no 2>&1) 1>&2|egrep \* >file
First say the child shell, 1 of the standard output is copied to 2, so the output of the child shell is all standard output, the overall output, encountered 1>&2, the standard error of the pipeline copied to 1, so this time all the output before the pipeline has become a standard error, Standard errors are not piped, so print directly to the screen as an error, and the Egrep pipeline receives no input stream
This article is from the "All the Way" blog, please be sure to keep this source http://zhongwen.blog.51cto.com/2645063/1586306
LS you no 2>&1 1>&2|egrep \* >file and (ls you no 2>&1) 1>&2|egrep \* >file execution results are different