Linux/Unix 命令行:输入输出重定向

    在Unix系统中,任何命令,包括Shell本身,默认情况下总是读取来自终端键盘输入的数据,这个数据输入源通常称作标准输入(stdin),其文件描述符为0.
    默认情况下,命令的处理结果总是输出到用户终端的屏幕上,这个输出目的通常称作标准输出(stdout),其文件描述符为1.
    另外,在命令的执行期间,如果出现问题,相应的错误信息默认情况下也将输出到用户的终端屏幕上,这个输出目的通常称作标准错误输出(stderr),其文件描述符为2.

    有上面的基础知识后,我们现在来讨论Linux/Unix系统命令行的精妙之处:输入输出重定向.
    例如:
       ls -l > fname
    上述命令就是把ls命令的返回结果输出到fname这个文件中去,但是要注意的事情是输出前将清空原文件内容(如果原文件存在).使用ls -l >>fname这个命令是将结果附加到原文件后面.
       grep root < fname
    上述命令是在fname这个文件中寻找带有root这个字段的内容,是把标准输入重定向为文件输入.

上述命令其实是简化后的形式,其原始形式为
    0 < fname   把标准输入重定向到指定文件中
    1 > fname   把标准输出重定向到文件中
    2 > fname   把标准错误输出重定向到文件中

还有一个重要的用法
    i>& j   把文件描述符i表述的输出文件重定向到文件描述符j表示的文件
    例如: 
       command_1 2 >& 1   把这个错误命令的标准错误输出重定向到标准输出

其原理是用指针实现的.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章