zoukankan      html  css  js  c++  java
  • linux shell 中的 2>&1 用法说明

    linux中有三种标准输入输出,分别是 STDIN,STDOUT,STDERR,对应的数字是 0,1,2。

    STDIN 是标准输入,默认从键盘读取信息; 
    STDOUT 是标准输出,默认将输出结果输出至终端,也就是显示器之类的东西; 
    STDERR 是标准的错误信息,默认也会显示在终端上。 
    由于STDOUT与STDERR都会默认显示在终端上,为了区分二者的信息,就有了编号的0,1,2的定义,用1表示STDOUT,2表示STDERR。

    下面举例说明:

    以普通用户登陆(Cent OS 7),执行 find /etc -name passwd 命令,默认会将命令的执行结果(STDOUT)与错误信息(STDERR)都输出至终端显示器。

    体验一下编号 1,2 的作用,find /etc -name passwd 1>find.out 2>find.err ,这里会将 STDOUT 与 STDERR 分别存放至 find.out 和 find.err 中

    个人理解就是 find /etc -name passwd 的命令的执行结果输出正确的输出(STDOUT)被1接收,错误的信息(STDERR)被2接收。

    若要将所有的输出及错误信息都显示出来,可以用&表示全部1和2的信息,例如: 
    find /etc -name passwd &>find.all

    有时候希望将错误的信息重新定向到输出,就是将2的结果重定向至1中就有了”2>1”这样的思路,如果按照上面的写法,系统会默认将错误的信息(STDERR)2重定向到一个名字为1的文件中,而非所想的(STDOUT)中。因此需要加&进行区分。就有了 2>&1 这样的用法:

    find /etc -name passwd 2>&1 |less

    有时候还能看到这样的用法: 
    find /etc -name passwd &2>&1 | less 
    这里可以分解成 
    find /etc -name passwd & 表示前面的命令放到后台执行。 
    2>&1 | less 表示将错误信息重定向至标准输出,并用less进行分页显示。

  • 相关阅读:
    rpcbind禁用不了,111端口无法释放?
    python3 pexpect 自动交互修改linux系统密码
    pip将包安装到指定位置
    使用openssl对文件进行加密解密
    james-2.3.2.1发邮件慢,不能多线程同时发
    java指令执行一个class文件并指定依赖包的路径
    ltib for imx280 tips
    使用net-snmp的snmptranslate命令验证MIB文件
    嵌入式linux去掉开机进度条,更换背景,换企鹅logo
    使用cppcheck对C代码进行静态检查
  • 原文地址:https://www.cnblogs.com/gwyy/p/8318332.html
Copyright © 2011-2022 走看看