• linux中的标准输出和输入


    ===============1.有些人经常问我这个问题问题===========

    经常在脚本里面看到这个    2>&1     表示什么意思啊?

    ==============2.理论==========================

    在linux中,每个进程都会有三个文件,并且这三个文件会进行重定向处理:

    /dev/stdin          ----->/proc/self/fd/0             //表示标准输入,即键盘输入

    /dev/stdout        ----->/proc/self/fd/1     //表示标准输出,即显示屏,屏幕

    /dev/stderr         ---->  /proc/self/fd/2           //表示标准错误输出,有些脚本运行时会报错,就会输入到这。

     你看到的2>&1中的数字就是上面重定向后的数字。

    0: 表示键盘输入

    1:将信息输入到屏幕(一般linux命令都是默认为1)

    2:将信息输入到错误输出

    ===================3.举个栗子====================

    在终端中写一个sh文件

    >>>>>>>>>>>>>>

    $cat  demo.sh

    #!/bash/bin

    xxxx

    date

    <<<<<<<<<<<<<<

    执行这个sh文件,并将输出到demo.log中

     ./demo.sh > demo.log
    ./demo.sh: line 2: xxxx: command not found

    由于xxxx不是linux命令会报错,并且将错误信息输出到屏幕(标准输出),而date是linux

    命令,会正确输出,并将正确的信息输出到demo.log文件中

    cat demo.log
    Sat Mar  5 09:49:11 HKT 2016

    ==============4.再回头看最开始的问题============

    2>&1  意思就很明了了,就是讲执行linux命令时的错误信息也输出到屏幕上。

     ./demo.sh 2>&1
    ./demo.sh: line 2: xxxx: command not found
    Sat Mar  5 09:57:09 HKT 2016

    ===============收工======================

  • 相关阅读:
    墙裂推荐!B站上的Python学习资源
    docker实践-安装wordpress
    docker 使用:创建nginx容器
    docker 使用:镜像和容器
    python标准库:ftplib模块
    python标准库:datetime模块
    python标准库:csv 模块
    python标准库-calendar 模块
    python标准库-builtin 模块之compile,execfile
    python标准库-array 模块
  • 原文地址:https://www.cnblogs.com/horizonli/p/5244180.html
Copyright © 2020-2023  润新知