Linux下的输入/输出重定向

2、 基本IO


  cmd > file 把 stdout 重定向到 file 文件中;


  cmd >> file 把 stdout 重定向到 file 文件中(追加);


  cmd 1> fiel 把 stdout 重定向到 file 文件中;


  cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;


  cmd 2> file 把 stderr 重定向到 file 文件中;


  cmd 2>> file 把 stderr 重定向到 file 文件中(追加);


  cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中(追加);


  cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;


  cat <>file 以读写的方式打开 file;


  cmd < file cmd 命令以 file 文件作为 stdin;


  cmd << delimiter Here document,从 stdin 中读入,直至遇到 delimiter 分界符。


  3、 进阶IO


  >&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出;


  <&n 标准输入复制自文件描述符 n;


  <&- 关闭标准输入(键盘);


  >&- 关闭标准输出;


  n<&- 表示将 n 号输入关闭;


  n>&- 表示将 n 号输出关闭;


  上述所有形式都可以前导一个数字,此时建立的文件描述符由这个数字指定而不是缺省的 0 或 1。如:


  ... 2>file 运行一个命令并把错误输出(文件描述符 2)定向到 file。


  ... 2>&1 运行一个命令并把它的标准输出和输出合并。(严格的说是通过复制文件描述符 1 来建立文件描述符 2 ,但效果通常是合并了两个流。)


  我们对 2>&1详细说明一下 :2>&1 也就是 FD2=FD1 ,这里并不是说FD2 的值 等于FD1的值,因为 > 是改变送出的数据信道,也就是说把 FD2 的 “数据输出通道” 改为 FD1 的 “数据输出通道”。如果仅仅这样,这个改变好像没有什么作用,因为 FD2 的默认输出和 FD1的默认输出本来都是 monitor,一样的!但是,当 FD1 是其他文件,甚至是其他 FD 时,这个就具有特殊的用途了。请大家务必理解这一点。


  exec 0exec 1>outfilename # 打开文件outfilename作为stdout。


  exec 2>errfilename # 打开文件 errfilename作为 stderr。


  exec 0<&- # 关闭 FD0。


  exec 1>&- # 关闭 FD1。


  exec 5>&- # 关闭 FD5。


  这样就完成了Linux重定向的学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值