linux命令 exec

exec命令可以通过文件标识符打开或关闭文件,也可以将文件重定向到标准输入,及将标准输出重定向到文件。

1.将标准输入重新定向到文件,以及通过其他的FD(文件描述符或者句柄)文件恢复到标准输入

#!/bin/bash

exec 8<&0     #FD0复制到FD8 ,同时打开FD8文件     
exec  <hfile    #等价与 0<hfile (hfile为文件名称)

read a
read b
echo "------------------"
echo $a
echo $b

echo "Close FD 8:"
exec 0<&8 8<&-    #将FD8复制到FD0,恢复FD0; 关闭FD8
echo -n "Pls. Enter Data:"

read c
echo $c


2.将标准输出重新定向到文件,以及通过其他的FD(文件描述符或者句柄)文件恢复到标准输出

#!/bin/bash

exec 8>&1  #FD8是FD1的副本用于恢复FD1
exec 1>hfile # == 1>hfile 将标准输出定向到hfile
echo "Output of date command"
date
echo "Output of df command"
df

exec 1>&8 8>&-  #恢复标准输出
echo "--------------"
echo "Output of date command"
date
echo "Output of df command"
df


总结:

符号意义
n>&m将FD为m的输出复制到FD为n的文件
n<&m将FD为m的输入复制到FD为n的文件
n>&-关闭FD为n的输出
n<&-关闭FD为n的输入
&>file将标准输出和标准错误输出定向到文件file

>重定向输出

<重定向输入

&- 关闭输入或者输出(取决与前面的 '<' 或者 '>')

&>file 则比较特殊


shell文件描述符(转自:http://hi.baidu.com/zdd8231/item/d745c80a240627e1fe240d7c)

打开文件描述符
Shell中,0、1、2也是默认可用的三个文件描述符。为了利用其他文件描述符来标识特定文件,我们需要使用exec命令打开该文件,并指定一个数字作为描述符:
exec m> outfile
exec n< infile
第一行打开文件outfile,并赋予文件描述符m,第二行打开文件infile,并赋予文件描述符n。

复制文件描述符
符号<&可以复制一个输入文件描述符,符号>&可以复制一个输出描述符。例如下面命令打开文件描述符n,并将其作为文件描述符m的副本:
exec n<&m

关闭文件描述符
exec n<&-
exec m<&-

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值