• 标准输入、标准输出、标准错误详解


    文件描述符

    当执行shell命令时,会默认打开3个文件,每个文件有对应的文件描述符来方便我们使用:

    类型文件描述符默认情况对应文件句柄位置
    标准输入(standard input) 0 从键盘获得输入 /proc/self/fd/0
    标准输出(standard output) 1 输出到屏幕(即控制台) /proc/self/fd/1
    错误输出(error output) 2 输出到屏幕(即控制台) /proc/self/fd/2

    所以我们平时在执行shell命令中,都默认是从键盘获得输入,并且将结果输出到控制台上。但是我们可以通过更改文件描述符默认的指向,从而实现输入输出的重定向。比如我们将1指向文件,那么标准的输出就会输出到文件中。

    /dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞” 
    1、2>/dev/null意思就是把错误输出到“黑洞” 

    2、>/dev/null 2>&1默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞” 

    3、2>&1 >/dev/null意思就是把错误输出2重定向到标准出书1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕 
    关于这里”&”的作用,我们可以这么理解2>/dev/null重定向到文件,那么2>&1,这里如果去掉了&就是把错误输出给了文件1了,用了&是表明1是标准输出。

    输出重定向

    输出重定向的使用方式很简单,基本的一些命令如下:

    命令介绍
    command >filename 把标准输出重定向到新文件中
    command 1>filename 同上
    command >>filename 把标准输出追加到文件中
    command 1>>filename 同上
    command 2>filename 把标准错误重定向到新文件中
    command 2>>filename 把标准错误追加到新文件中

    输入重定向

    在理解了输出重定向之后,理解输入重定向就会容易得多。对输入重定向的基本命令如下:

    命令介绍
    command <filename 以filename文件作为标准输入
    command 0<filename 同上
    command <<delimiter 从标准输入中读入,直到遇到delimiter分隔符

    我们使用<对输入做重定向,如果符号左边没有写值,那么默认就是0。

    https://blog.csdn.net/mengzuchao/article/details/82378769

  • 相关阅读:
    数据结构解决哈希冲突方法回顾
    java线程池大小分配方案
    java线程池工作原理
    非对称密码体制
    java ThreadLocal
    jvm配置参数
    定时器深入讲解
    开发笔记三
    开发笔记二
    js证书批量生成与打包下载
  • 原文地址:https://www.cnblogs.com/fengfengyang/p/15486783.html
Copyright © 2020-2023  润新知