zoukankan      html  css  js  c++  java
  • 【shell】1>/dev/null 2>&1 详解

    今天看别人的shell脚本,里面用到了【1>/dev/null 2>&1】,这个是我之前没有用过的,于是学习了博友的一篇文章:https://www.cnblogs.com/xingmeng/archive/2013/08/12/3252390.html

    以下自己稍做整理,方便自己记忆和复习。

    先将此命令组合进行拆解为如下2个部分(一长串的命令看起来会很懵,拆解后进行理解就很容易啦。我刚开始学习shell的时候,就习惯拿着别人的命令去拆解,然后弄明白每个字符的意思,这种方式真的很有效):

    1)1>/dev/null:

      1,指stdout标准输出,系统默认值是1;

      >,指重定向;

      /dev/null,指控设备文件。

      所以,此部分的执行结果是:将标准输出的内容写入空设备文件(其实就是不想记录输出的日志),若需要记录,则将/dev/null替换为日志文件的名称即可。

    2)2>&1:

      2,指stderr标准错误;

      &,是“等同于”的意思;

      1,即stdout

      所以,此部分的执行结果是:将标准错误stderr的内容写入标准输出stdout。而我们的前段命令将stdout的结果输出到了空设备文件,因此,stderr的内容最终也是输出到了空设备文件。

    【小疑问】

    为什么不用【1>/dev/null 2>/dev/null】来代替以上写法呢?

    答:用写法2的话,则stdout和stderr都打开了同一个文件/dev/null,stdout和stderr会互相覆盖。而写法1,是将stderr先送往stdout,/dev/null仅被stdout打开,所有stdout的内容(包括stderr送过来的)统一由stdout送往/dev/null。

  • 相关阅读:
    dedecms内容页调用缩略图 缩略图多种用法(借鉴)
    线性回归
    Jupyter Notebook 快捷键
    etcd入门
    Centos7 Docker安装
    TFIDF介绍
    Ceph 概念理解
    Nifi简介及核心概念整理
    经典排序算法总结
    Hbase协处理器
  • 原文地址:https://www.cnblogs.com/jona-test/p/11475417.html
Copyright © 2011-2022 走看看