zoukankan      html  css  js  c++  java
  • Linux中 2>&1 的用法

      在跑视频数据集的时候,经常看到脚本文件中出现了 sh run_pascal.sh 2>&1 | tee train.log  类似的用法,那么2>&1究竟是怎么用的呢?

    在linux中,0表示标准输入,即stdin;1表示标准输出,即stdout;2表示标准错误,即stderr。

    >表示重定向,&表示取地址,那么&1就是取到了标准输出的地址,也就是 2>&1表示的是将标准错误重定向到了标准输出,也就是将运行脚本中出错的信息重定向到了标准输出。

    举例:

      ls 2>1测试一下,由于ls命令会列出当前目录的文件列表,不会产生错误信息,于是会产生一个空的文件1。
      ls xxx 2>1测试,ls xxx会列出xxx的文件列表,如果没有xxx文件,会产生错误信息,于是会产生一个有错误信息的文件1。
      ls xxx 2>&1测试,如果没有xxx文件,会产生错误信息在屏幕上,即标准输出。
      ls xxx >out.txt 2>&1, 实际上就是ls xxx 1>out.txt 2>&1。如果没有xxx文件,会产生一个标准错误重定向到了标准输出,而标准输出又重定向到了out.txt,于是结果会产生一个有错误信息的文件out.txt。如果有xxx文件,那么结果会将输出存入文件out.txt。总的说来,就是将输出和错误都存入了文件out.txt。

    那么sh run_pascal.sh 2>&1 | tee train.log 也就好理解了,就是将sh run_pascal.sh的运行结果(输出和错误)都重定向到标准输出,同时,利用tee命令将信息存入train.log文件。

    非学无以广才,非志无以成学! 【Magic_chao

  • 相关阅读:
    JavaScript--事件绑定及深入(26)
    JavaScript--事件对象(25)
    JavaScript--事件入门(24)
    JavaScript--动态加载脚本和样式(23)
    JavaScript--DOM元素尺寸和位置(22)
    JavaScript--DOM操作表格及样式(21)
    JavaScript--DOM进阶(20)
    jQuery-瀑布流的取巧做法分享
    Less开发指南(二)- 基本语法
    less开发指南(一)- 小牛试刀
  • 原文地址:https://www.cnblogs.com/logo-88/p/9741832.html
Copyright © 2011-2022 走看看