Shell exec

重定向

概念

  • I/O重定向通常与FD有关
  • 三个常用FD(默认与keyboard、monitor、monitor有关)
  • 一般情况下,操作系统默认只存在这三个fd,但是我们通过ls去查看的时候发现会有一个大于2的fd,这是因为我们在查看的时候会有一个句柄产生,这个时候会生成一个新的fd
FD说明
0stdin,标准输入
1stdout,标准输出
2stderr,标准错误输出

 

 

 

 

 

重定向输出

&- 关闭标准输出
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 1>outfilename    # 打开文件outfilename作为stdout
exec 2>errfilename    # 打开文件errfilename作为 stderr
exec 1&-                   # 关闭 FD1
exec 5>&-                # 关闭 FD5
exec 1>&- 2>&-    # 关闭所有的输出
 
exec 4<&1              # 备份当前stdout至FD4
exec 1>1.txt          # stdout重定向至1.txt
exec 1<&4            # 恢复stdout
exec 4>&-           # 关闭 FD4

exec 6>&1       # 将标准输出与fd 6绑定
exec 1>&6       # 将标准输出1恢复回来
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值