原文:http://blog.sina.com.cn/s/blog_8333cf8f0100vzzl.html##1

1. 标准输入输出和错误

   linux下使用标准输入文件stdin和标准输出文件stdout,来表示每个命令的输入和输出,还使用一个标准错误输出文件stderr用于输出错误信息。这三个标准输入输出系统缺省与控制终端设备相联系在一起。

因此,在标准情况下,每个命令通常从它的控制终端中获取输入,将输出打印到控制终端的屏幕上。但是也可以重新定义程序的标准输入文件stdin和标准输出文件stdout,将它们重新定向。最基本的用法是将它们重新定义到一个文件上,从一个文件获取输入,输出到另外的文件中等。标准输入文件stdin,通常对应终端的键盘;标准输出文件stdout和标准错误输出文件stderr,这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。

2. 文件描述符

   文件描述符是从0开始的整数,指向与进程相关的特定数据流。当进程启动时,通常打开三个文件描述符,分别对应三种标准的I/O:标准输入(文件描述符0),标准输出(文件描述符1),标准错误(文件描述符2)。

1)标准输入(STDIN):它是命令的输入,缺省和终端的键盘关联

2)标准输出(STDOUT):它是命令的输出,缺省和终端的屏幕关联

3)标准错误(STDERR):它是命令的错误信息输出,缺省也和终端的屏幕关联

4)如果进程打开了额外的文件进行输入和输出,则其被设置为下一个可用的文件描述符,从3到9

3. 文件重定向

   在执行命令时,命令的标准输入、输出和错误信息是和问价描述符0、1、2关联的,而文件描述符0、1、2缺省和终端关联。如果希望命令从文件中读取标准输入或则希望命令的标准输出写到文件而不是屏幕,就需要使用文件重定向。

4. 重定向标准输出(输出重定向)

 1)CMD > filename:把CMD命令的标准输出重定向到一个文件中(如果文件存在,其内容将被覆盖)

 2)CMD >> filename:把CMD命令的标准输出重定向到一个文件中(追加文件尾部)

 3)> myfile      :创建一个空文件,如果文件存在则清空该文件

 4)举例:ls -l | grep ^d >>files.out //把当前目录下的子目录的列表写到文件files.out中

         >sql.log                    //清空sql.log

5. 重定向标准输入(输入重定向)

 1)CMD < filename:以filename文件作为CMD命令的标准输入

 2)CMD << DELIMITER:从标准输入中读入输入,知道遇到DELIMITER分解符。

 3)举例:sort < grade.txt //对文件grade.txt进行排序(sort)

 4)CMD <filename实际上是和CMD 0<filename等效,CMD << filename和CMD 0 <<filename 等效

6. 重定向标准错误(错误信息重定向)

 1)CMD 2> filename:把CMD命令的标准错误重定向到一个文件中(如果文件存在,其内容将被覆盖)

 2)CMD 2>> filename:把CMD命令的标准错误重定向到一个文件中(追加文件尾部)

 3)举例:find / -name "*.tmp" -exec rm -rf {}; 2>/dev/null //把命令的错误信息输出丢弃

最新文章

  1. .NET中的异步
  2. Excel Sheet Column Number || leetcode
  3. 使用spark访问elasticsearch的数据
  4. 泛型集合转换为DataTable
  5. DNSget Ip
  6. linux文件权限解说
  7. Java中两种实现多线程方式的对比分析
  8. MD5和sha1加密算法
  9. Git中的merge命令实现和工作方式
  10. hdu2062(递推)
  11. 基于Asterisk的VoIP开发指南——Asterisk 模块编写指南(1)
  12. linux文件截取前几行,后几行,中间几行命令
  13. Android 画文字图
  14. JAVA 数组作为方法返回值—返回地址
  15. RxAndroid防止内存泄露
  16. Java数组声明、初始化
  17. java JDBC (五) properties配置文件
  18. NPM(Node Package Manager,Node包管理器)
  19. centos7下更新firefox
  20. 20155313 2016-2017-2 《Java程序设计》第九周学习总结

热门文章

  1. Linux内核中链表的学习
  2. 字符串各个字符ASCII值加5
  3. RSA非对称算法实现HTTP密码加密传输
  4. eclipse--windowBuilder
  5. Python学习总结之四 -- 这就是Python的字典
  6. YII框架学习(二)
  7. win10 64位 安装TensorFlow
  8. 【BZOJ4605】崂山白花蛇草水 权值线段树+kd-tree
  9. 九度OJ 1014:排名 (排序)
  10. 【题解】Jury Compromise(链表+DP)