• 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进行分页显示。

  • 相关阅读:
    [置顶] 礼物:《红孩儿引擎内功心法修练与Cocos2dx》之结点系统(场景,层,精灵)
    略读六部计算机名著
    #Sam有话说#AI OR AXURE
    Android 鲜为人知的 8 个小秘密
    iphone下来电实现铃声静音
    mac下的svn工具——Versions使用详解
    android下面res目录使用
    状态压缩DP 题目小节 (一)
    [置顶] 【游戏产业的5年之变】
    /usr/bin/ld: cannot find lxxx问题总结
  • 原文地址:https://www.cnblogs.com/gwyy/p/8318332.html
Copyright © 2020-2023  润新知