Linux Shell数据重定向

文件描述符和数据重定向

文件描述符(File Descriptor):

1.对于内核而言,所有打开的文件都通过文件描述符引用。

文件描述符(fd)是一个非负整数,当打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。
按照惯例,UNIX系统shell把文件描述符0与进程的标准输入关联,1与进程的标准输出关联,2与进程的标准错误关联。

  • STDIN_FILENO = 0
  • STDOUT_FILENO = 1
  • STDERR_FILENO = 2
2.运行任何一个shell命令,都有上述3个默认的文件描述符
3.文件描述符的变化范围是0~OPEN_MAX-1
4.linux查询当前文件描述符限制数目
1
ulimit -n
5.查看系统的最大限制
1
2
$ cat /proc/sys/fs/file-max 
806573

数据重定向:

1.重定向标准输出和标准错误,例如:file1 存在,file2不存在
1
2
3
4
5
6
7
8
9
10
11
$ echo "This is file1">file1
$ echo "initialize stdout...">stdout
$ echo "initialized stderr...">stderr
$ cat file1 file2 >> stdout 2>>stderr
$ cat stdout
initialize stdout...
This is file1

$ cat stderr
initialize stderr...
cat: file2: 没有那个文件或目录
2.从file2输入,输出到file1
1
$ cat >>file1 <file2