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

在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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,243评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,653评论 9 468
  • 愚人节,是一个套路和反套路的日子。 要么你娱乐别人,要么你被人娱乐。
    CristPenn阅读 246评论 0 1
  • 来说说我的开学第一天吧。 五点,到达北国春城——长春。这里有我想到的一切:高楼,花朵,宽广的广场,凉爽的空气,洁净...
    逸黎阅读 231评论 0 1