Chinaunix首页 | 论坛 | 博客
  • 博客访问: 686040
  • 博文数量: 94
  • 博客积分: 3369
  • 博客等级: 中校
  • 技术积分: 1144
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
文章分类

全部博文(94)

文章存档

2014年(1)

2013年(1)

2012年(65)

2011年(20)

2009年(7)

我的朋友

分类: LINUX

2012-04-12 21:54:17

Linux系统中,每当进程打开一个文件时,系统就为其分配一个唯一的整型文件描述符,用来标识这个文件。大家知道,标C中,每个进程默认打开的有三个文件,标准输入、标准输出、标准错误输出,分别用一个FILE结构的指针来标示,即stdin、stdout、stderr,这三个结构中分别维护着三个文件描述符0、1、2。

Shell中,0、1、2也是默认可用的三个文件描述符。为了利用其他文件描述符来标识特定文件,我们需要使用exec命令打开该文件,并指定一个数字作为描述符,文件符range是0-9.

因为0是标准输入,1是标准输出,2是标准错误,所以没有特别缘由,我们使用3-9.

举例:

  1. exec 3以只读方式文件打开/tmp/1.txt文件,文件描述符对应为3
  2. exec 3>/tmp/1.txt
    写方式打开/tmp/1.txt,文件描述符对应为3
  3. exec 3<>/tmp/1.txt
    读写方式打开/tmp/1.txt,文件描述符对应为3
  4. exec 3<&-
    关闭文件描述符3

附录:常用文件重定向命令

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

阅读(2338) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

星期五啦2012-04-14 12:20:29

恩恩, ls -l >/111.txt >/222.txt 为什么不把结果向两个文件中都输入呢?
楼主在不

夏冰软件2012-04-13 17:00:56

非常不错

校长的马夹2012-04-13 12:56:48

有没有更详细的???或者介绍一下相关书籍~楼书谢谢了