Linux Shell输入输出重定向

版权声明: https://blog.csdn.net/u013531940/article/details/79447702

Linux中有三种标准输入输出:

  1. STDIN      对应0     标准输入,默认从键盘读取信息
  2. STDOUT   对应1    标准输出,默认将输出结果输出至终端
  3. STDERR    对应2    标准的错误信息,默认也会显示在终端

举例说明:

1.  执行 find /etc -name passwd 命令,默认会将命令的执行结果(STDOUT)与错误信息(STDERR)都输出至终端


2. 执行cat xxx 1>find.out  2>find.err 命令的执行结果输出正确的输出被1接收,错误的信息被2接收


3. 若要将所有的输出及错误信息都显示出来,可以用&表示全部1和2的信息


4. 将错误的信息重新定向到输出,将2的结果重定向至1中,就有了”2>1”,按照该写法,系统会默认将错误的信息(STDERR)2重定向到一个名字为1的文件中


5. 加&进行区分, 2>&1,将错误信息重定向至标准输出


6. 输入输出重定向应用


 

问题:为何2>&1要写在后面?

     command > file 2>&1

     command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中

     command 2>&1 >file

     2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端


参考资料:

1. http://blog.csdn.net/huangfei711/article/details/51059310

2. http://blog.csdn.net/w417318472/article/details/21398699


猜你喜欢

转载自blog.csdn.net/u013531940/article/details/79447702