exec是shell的一个built-in command,一般用来execute某个command,然后退出该command,注意这里不是fork一个子shell,然后用该子shell来执行command,而是在当前shell上直接执行该command,所以command退出后,该shell也就结束了。
exec的另外一个功能是打开和关闭文件描述符,文件符range是0-9.
因为0是标准输入,1是标准输出,2是标准错误,所以没有特别缘由,我们使用3-9.
举例:
- exec 3</tmp/1.txt
以只读方式文件打开/tmp/1.txt文件,文件描述符对应为3 - exec 3>/tmp/1.txt
以写方式打开/tmp/1.txt,文件描述符对应为3 - exec 3<>/tmp/1.txt
以读写方式打开/tmp/1.txt,文件描述符对应为3 - 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