bash 中 1 2 ,/dev/null,2>&1 都是什么意思

Jan 29, 2018 12:42 · 406 words · 1 minute read

  • 在 bash 中,1 代表标准输出,2 代表错误输出,那么2>/dev/null代表把错误输出重定向到空设备文件。关于/dev/nullwiki
  • 还有关于2>&1的内容详见这里
  • command > file 2>file 与command > file 2>&1 有什么不同的地方: 首先command > file 2>file的意思是将命令所产生的标准输出信息,和错误的输出信息送到 file 中。
    1. command > file 2>file这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道.
    2. ·command >file 2>&1这条命令就将 stdout 直接送向 file , stderr 继承了 FD1 管道后,再被送往 file ,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了 stdout 和 stderr 的内容。
    3. 从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会用command > file 2>&1 这样的写法.
tweet Share