当我们在 shell 中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符(文件描述符是一个简单的整数,用以标明每一个被进程所打开的文件和socket。第一个打开的文件是0,第二个是1,依此类推)来引用这些文件。由于文件描述符不容易记忆,shell 同时也给出了相应的文件名。

STDIN  (0): 标准输入,位置 /dev/stdin, 缺省为键盘,也可以是文件或其他命令的输出
STDOUT (1): 标准输出,位置 /dev/stdout, 缺省为 Terminal,也可以是文件
STDERR (2): 标准错误,位置 /dev/stderr, 缺省为 Terminal,也可以是文件

在执行命令时,可以指定命令的标准输入、输出和错误,要实现这一点就需要使用文件重定向。下面列出了最常用的重定向组合,并给出了相应的文件描述符。 
在对标准错误进行重定向时,必须要使用文件描述符,但是对于标准输入和输出来说,这不是必需的。

常用文件重定向命令

command > filename 把标准输出重定向到一个新文件中
command >> filename 把标准输出重定向到一个文件中(追加)
command 1 > fielname 把标准输出重定向到一个文件中
command > filename 2>&1 把标准输出和标准错误一起重定向到一个文件中
command 2> filename 把标准错误重定向到一个文件中
command 2>> filename 把标准输出重定向到一个文件中(追加)
command >> filename 2>&1 把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename 把 command 命令以 filename 文件作为标准输入
command < filename > filename2 把命令 command 以 filename 文件作为标准输入,以 filename2 文件作为标准输出
command << delimiter 从标准输入中读入,直至遇到 delimier 分界符
command <&m 把文件描述符m作为标准输入
command >&m 把标准输出重定向到文件描述符m中
command <&- 关闭标准输入

Note: 有些程序(特别是象bash 、make这样执行了其他程序的程序)的设计者为了省事,把一些正常情况的信息也放在stderr中输出(即使程序本身并无错误),而stdout用来输出被调用程序的执行时信息,在这种情况下如果需要将屏幕中的所有输出输出到文件需要使用 2>&1.

STDIN(0), STDOUT(1), STDERR(2), 2 > &1的更多相关文章

  1. stdin、stdout、stderr

    1 ferror 2 stdin 3 stdout 4 stderr 1 ferror 功能:检测文件是否出现错误 返值:未出错0,出错非0 说明:每次调用文件输入输出函数,均产生一个新的ferror ...

  2. C语言中的stdin,stdout,stderr[转]

    我们在写C程序时经常遇到printf(),fprintf(),perror(),这些东西到底有什么作用.说到这不得不提及stdin,stdout,stderr.想想,我们在用C去写文件时的操作,Fil ...

  3. PHP CLI中,三个系统常量:STDIN、STDOUT、STDERR

    PHP CLI中,有三个系统常量,分别是STDIN.STDOUT.STDERR,代表文件句柄. /** *@ 标准输入 *@ php://stdin & STDIN *@ STDIN是一个文件 ...

  4. (文件描述符0、1、2),(stdin、stdout、stderr),(终端设备)这三者之间的关系???

    前言 在Linux系统中,一切设备都看作文件.而每打开一个文件,就有一个代表该打开文件的文件描述符.程序启动时默认打开三个I/O设备文件:标准输入文件stdin,标准输出文件stdout,标准错误输出 ...

  5. linux stdin(0)/ stdout(1) / stderr(2)

    在shell中,每个进程都和三个系统文件相关联:标准输入stdin,标准输出stdout.标准错误stderr,三个系统文件的文件描述符分别为0,1.2.进程需要的输入来自stdin文件.进程的标准输 ...

  6. file descriptor 0 1 2 一切皆文件 stdout stderr stdin /dev/null 沉默是金 pipes 禁止输出 屏蔽 stdout 和 stderr 输入输出重定向 重定向文件描述符

    movie.mpeg.001 movie.mpeg.002 movie.mpeg.003 ... movie.mpeg.099   $cat movie.mpeg.0*>movie.mpeg   ...

  7. stderr,stdin,stdout相关

    转载请保留原作者. 目录 一.stdin和stdout 1.意义 2.缓冲 2.1.scanf的缓冲问题 2.2.fflush 3.freopen 二.stderr 1.输出方法 2.默认缓冲 一.s ...

  8. stdin,stdout 和 STDOUT_FILENO,STDIN_FILENO

    stdin,stdout 等类型为 FILE *. STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO 等类型为 int. 使用 FILE * 的函数主要有:fopen. ...

  9. 刨根问底系列(2)——stdin、stdout、FILE结构体、缓冲区和fflush的理解

    stdin.stdout.FILE结构体.缓冲区和fflush理解 因为之前调试代码时, printf输出的字符串总是被截断了输出(先输出部分, 再输出剩余的), 当时调试了很久, 才知道问题所在, ...

随机推荐

  1. C和指针 第十六章 标准函数库 本地跳转setjmp.h

    setjmp和longjmp提供一种类似goto语句的机制,但它的作用域不局限于同一个函数的作用域之内.这些函数可以用于深层次的嵌套函数调用链. int setjmp(jmp_buf state); ...

  2. linux 下安装mongodb

    1.初始化docker:    -v 设置docker和host共享目录,格式hostPath:dockerContainerPath    -p 端口映射    --name,容器名称    cen ...

  3. zabbix触发器依赖

    触发器依赖 Zabbix - Router1 - Router2 – Host 如果router1宕机了,那么router2和host都不能连上,这样的话就会发router1.router2和host ...

  4. 52. 不用+、-、×、÷做加法[add two numbers without arithmetic]

    [本文链接] http://www.cnblogs.com/hellogiser/p/add-two-numbers-without-arithmetic.html [题目] 写一个函数,求两个整数的 ...

  5. php二进制安全的含义

    PHP里,有string的概念.string里,每个字符的大小为byte(与PHP相比,Java的每个字符为Character,是UTF8字符,C语言的每个字符可以在编译时选择). byte里,有AS ...

  6. html+css上传文件控件美化

    html上传美化: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  7. 【转载】SSM框架整合

    http://blog.csdn.net/gebitan505/article/details/44455235/ 1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于20 ...

  8. 配置Samba共享服务器

    安装samba: sudo apt-get install samba samba-common 由于是挂载另一个磁盘,并作为共享文件存放地: 列出磁盘名和ID air@air-device:~$ s ...

  9. vue2.0环境搭建

    1.安装node.js(官网) 2.安装淘宝镜像  npm install -g cnpm --registry=https://registry.npm.taobao.org 3.安装webpack ...

  10. 手把手教你玩转nginx负载均衡(一)----使用vitualBox创建虚拟机

    引言 作为一个web程序员,有时候需要想尽办法来利用有限的资源来产生最大程度的负载,除了提高硬件配置,增加带宽之外,CDN加速,DNS加速,缓存,还可以利用反向代理.但是要说反向代理,就不的不说ngi ...