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

  • 相关阅读:
    NES游戏历史
    NES资料
    Spring的自动装配
    springmvc框架如何将模型数据传递给视图 也就是Model>view参数的传递
    拆分Spring的配置文件
    Springmvc框架前台传值给controller @Requestparam @RequestMapping
    SpringMVC框架传入Map集合
    SpringMVC框架使用注解编写的处理请求和映射@Controller @RequestMapping
    SpringMVC初尝试
    MVC设计模式
  • 原文地址:https://www.cnblogs.com/logo-88/p/9741832.html
Copyright © 2011-2022 走看看