美文网首页
xy总结linux的标准输入标准输出

xy总结linux的标准输入标准输出

作者: __XY__ | 来源:发表于2017-06-19 18:31 被阅读0次

    在shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名:

    文件&文件描述符

    • 输入文件—标准输入
      0(缺省是键盘,为0时是文件或者其他命令的输出)

    • 输出文件—标准输出
      1(缺省是屏幕,为1时是文件)

    • 错误输出文件—标准错误
      2(缺省是屏幕,为2时是文件)

    • 系统中实际上有12个文件描述符,我们可以任意使用文件描述符3到9.

    文件重定向:改变程序运行的输入来源和输出地点

    • 输出重定向:

    Command > filename
    把标准输出重定向到一个新文件中

    Command >> filename
    把标准输出重定向到一个文件中(追加)

    Command > filename
    把标准输出重定向到一个文件中

    Command > filename 2>&1
    把标准输出和错误一起重定向到一个文件中
    可以把2>&1理解为一个参数(2&1),为了转义,&前加>

    Command 2 > filename
    把标准错误重定向到一个文件中

    Command 2 >> filename
    把标准输出重定向到一个文件中(追加)

    Command >> filename2>&1
    把标准输出和错误一起重定向到一个文件(追加)

    • 输入重定向:

    Command < filename > filename2
    Command命令以filename文件作为标准输入,以filename2文件作为标准输出

    Command < filename
    Command命令以filename文件作为标准输入

    Command << delimiter
    从标准输入中读入,直到遇到delimiter分界符

    绑定重定向

    Command >&m
    把标准输出重定向到文件描述符m中

    Command < &-
    关闭标准输入

    Command 0>&-
    同上

    shell重定向的一些常用用法

    • 重定向标准错误
      例子1:command 2> /dev/null如果command执行出错,将错误的信息重定向到空设备
      例子2:command > out.put 2>&1将command执行的标准输出和标准错误重定向到out.put(也就是说不管command执行正确还是错误,输出都打印到out.put)。
    • 一般因为单元测试耗时时间长,我会选择把测试过程后台运行,并把结果放在一个特定的文件中
      例如: nosetests tests/test_sys.py -v > ../nosetest.txt 2>&1
      只需要回头看那个文件结果即可

    参考:
    http://zqwt.012.blog.163.com/blog/static/1204468420103272857116/
    http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html
    http://blog.csdn.net/flowingflying/article/details/5201199

    相关文章

      网友评论

          本文标题:xy总结linux的标准输入标准输出

          本文链接:https://www.haomeiwen.com/subject/tkknqxtx.html