原文: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 //把命令的错误信息输出丢弃

linux标准输入输出与重定向的更多相关文章

  1. 015 Linux 标准输入输出、重定向、管道和后台启动进程命令

    目录 1 三种标准输入输出 2 什么是重定向?如何重定向? (1)什么是重定向? (2)如何重定向? 3 管道符以及和它容易混淆的一些符号使用 (1)管道符 | (2)&和&& ...

  2. Linux 标准输入输出、重定向

    一 相关知识 1)默认地,标准的输入为键盘,但是也可以来自文件或管道(pipe |). 2)默认地,标准的输出为终端(terminal),但是也可以重定向到文件,管道或后引号(backquotes ` ...

  3. Linux 标准输入输出、错误输出、重定向标准输出

    再来看看 >& 操作符: 重定向操作符 描述 > 将命令输出写入到文件或设备(如打印机),而不是命令提示符窗口或句柄. < 从文件而不是从键盘或句柄读入命令输入. >& ...

  4. linux标准输入输出重定向

    command > filename 把标准输出重定向到一个文件,如果文件不存在则新建,如果存在则覆盖其内容.command >> filename 把标准输出重定向到一个文件中,如 ...

  5. linux标准输入输出及错误输出

    Linux Shell 环境中支持输入输出重定向,用符号"<"和">"来表示. 0.1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定 ...

  6. linux标准输入输出2>&1

    linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2.     STDIN是标准输入,默认从键盘读取信息:STDOUT是标准输出,默认将输出结果输出至终 ...

  7. linux标准输入输出错误输出

    Linux Shell 环境中支持输入输出重定向,用符号"<"和">"来表示.0.1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定需 ...

  8. linux中输入输出和重定向问题

    输入输出解释 当我们执行shell的时候,每个进程都和三个打开的文件有关系,并使用文件描述符来引用这些文件.但这些文件不容易记忆,所以shell给了相应的文件名: 0:输入文件-标准输入(它的命令是输 ...

  9. linux 标准输入输出

    文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket.最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出(stdout)和标准错误(stderr)对应 ...

随机推荐

  1. TimeSpan时间间隔

    一个TimeSpan对象都表示一个时间间隔 (持续时间的时间或时间),单位为正数或负数的天数. 小时. 分钟. 秒和小数部分的第二个数字.TimeSpan结构还可以用于表示一天时间,但仅,如果与某一特 ...

  2. Github的基本功能:

    作者:Fadeoc Khaos链接:http://www.zhihu.com/question/20070065/answer/30521531来源:知乎著作权归作者所有,转载请联系作者获得授权. G ...

  3. SQLite 数据库安装与创建数据库

    嵌入式关系数据库 Ubuntu $ sudo apt-get install sqlite3 sqlite3-dev CentOS, or Fedora $ yum install SQLite3 s ...

  4. Oracle -- Create User

    CREATE USER hibernate IDENTIFIED BY "123" DEFAULT TABLESPACE "HIBERNATE" TEMPORA ...

  5. 图像检测之sift and surf---sift中的DOG图 surf hessian

    http://www.cnblogs.com/tornadomeet/archive/2012/08/17/2644903.html http://www.cnblogs.com/slysky/arc ...

  6. 研究下JavaScript中的Rest參数和參数默认值

    研究下JavaScript中的Rest參数和參数默认值 本文将讨论使 JavaScript 函数更有表现力的两个特性:Rest 參数和參数默认值. Rest 參数 通常,我们须要创建一个可变參数的函数 ...

  7. c# 枚举返回字符串操作

    //内部类public static class EnumHelper { public static string GetDescription(Enum value) { if (value == ...

  8. Jmeter文章索引贴

    一.基础部分: 使用Jmeter进行http接口测试 Jmeter之Http Cookie Manager Jmeter之HTTP Request Defaults Jmeter之逻辑控制器(Logi ...

  9. ifndef/define/endif 和 #ifdef 、#if 作用和用法

    为了能简单的看看某些linux内核源码,复习了一下c语音,今天汇总了一下关于宏定义的相关内容: 一.ifndef/define/endif用法: .h文件,如下: #ifndef XX_H #defi ...

  10. 【题解】Painting Fence

    [题解]Painting Fence 分治模板.贪心加分治.直接\(O(n^2logn)\)分治过去.考虑一块联通的柱形是子问题的,是递归的,贪心分治就可.记得对\(r-l+1\)取\(min\). ...