linux命令 exec

来源:互联网 发布:淘宝怎么打假 编辑:程序博客网 时间:2024/05/29 04:16

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
原创粉丝点击