Contents
  1. 1. linux文件描述符:
  2. 2. 输出重定向
  3. 3. 输入重定向
  4. 4. 常用解释

了解linux重定向之前需要先简单介绍一下文件描述符(fd)。

linux文件描述符:

文件描述符是一个非负整数,是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开或者创建一个新文件时,内核向进程返回一个文件描述符。
一般,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2;文件描述符的有效范围是 0 到 OPEN_MAX。

linux shell下常用输入输出操作符是:

  1. 标准输入(stdin) :代码为 0 ,使用 < 或 << ; /dev/stdin -> /proc/self/fd/0 0代表:/dev/stdin
  2. 标准输出(stdout):代码为 1 ,使用 > 或 >> ; /dev/stdout -> /proc/self/fd/1 1代表:/dev/stdout
  3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ; /dev/stderr -> /proc/self/fd/2 2代表:/dev/stderr

输出重定向

格式:

command-line1 [1-n] > file或文件操作符或设备

上面命令意思是:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的) 重定向其它输出设备(文件,打开文件操作符,或打印机等等)1,2分别是标准输出,错误输出。

输入重定向

格式:

command-line [n] <file或文件描述符&设备

将然有,命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入。执行这个命令,将标准输入0,与文件或设备绑定。将由它进行输入。

常用解释

  • > 表示定向输出到文件,覆盖原有内容;
  • >> 表示定向追加到目标文件,追加到末尾;
  • < 表示导入;
  • 1> 表示输出重定向,1可以省略;
  • 2> 表示标准错误(stderr)输出重定向;
  • 2>&- 表示将错误输出关闭,&-表示关闭与它绑定的描述符;
  • 1>&- 表示关闭标准输出;
  • 2> /dev/null 表示错误重定向到黑洞,linux 中/dev/null表示黑洞设备,吃掉一切;
  • >/dev/null 2>&1 将错误输出2绑定给正确输出1,然后将 正确输出 发送给 /dev/null设备
Contents
  1. 1. linux文件描述符:
  2. 2. 输出重定向
  3. 3. 输入重定向
  4. 4. 常用解释