概述
文章目录
- exec操作文件描述符
- 一、exec的基本形式
- 二、案例
- 1、基础命令
- 2、脚本测试
- 三、常见的文件(重定向)
exec操作文件描述符
exec命令可以用来替代当前shell;
换句话说,并没有启动子shell,使用这一命令时任何环境都将被清除,并重新启动一个shell
linux默认文件描述符:
每打开一个shell就会打开默认的三个文件描述符描0,1,2分别代表【标准输入】和【标准输出】及【标准错误输出】
一、exec的基本形式
描述exec命令最贴切通俗的说法是:它践踏了你当前的shell
linux每一个打开文件都会关联一个文件描述符,需要的时候我们可以使用exec命令指定一个大于3的数字作为文件
exec command 其中,command通常是一个shell脚本
当这个脚本结束了,相应的会话可能也就结束了。
但是,exec在对文件描述符进行操作的时候(也只有在这个时候),它不会覆盖你当前的shell
二、案例
1、基础命令
1)# exec 3</tmp/1.txt //以“只读方式”打开/tmp/1.txt,文件描述符对应为3
2)# exec 3>/tmp/1.txt //以“只写方式”打开/tmp/1.txt,文件描述符对应为3
3)# exec 3<>/tmp/1.txt //以“读写方式”打开/tmp/1.txt,文件描述符对应为3
4)# exec 3<&- //关闭文件描述符3
2、脚本测试
#脚本测试
#!/bin/bash
exec 4>&1 #用4记录标准输出
exec 1>/tmp/abc #重定向标准输出
echo "123"
echo "456"
exec 1>&4 #恢复标准输出
exec 4>&- #关闭4
(运行此脚本,脚本中的echo输出会输出到/tmp/abc文件中,脚本第二行用4>&1 是为了记录标准输出的文件描述符便于执行完毕后恢复标准输出,恢复标准输出也可以用exec 1>/dev/tty)
#注:
echo "hello" >&4 向文件描述符中输入内容只使用 > 不能用 >> ,此时的 > 不会清空文件,是否清空文件需要在exec命令关联文件描述符到文件的时候区别使用 > 或 >>
#例如下脚本:
#!/bin/bash
exec 4>/tmp/abc
echo "123" >&4
echo "456" >&4
exec 4>&-
则每次执行完脚本后/tmp/abc文件内容都是123n456,若把第二行换成exec 4>>/tmp/abc则会追加进去(文件的清空操作是在exec命令的操作时进行的)
三、常见的文件(重定向)
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
最后
以上就是单纯冬日为你收集整理的@linux中exec操作文件描述符及文件重定向exec操作文件描述符的全部内容,希望文章能够帮你解决@linux中exec操作文件描述符及文件重定向exec操作文件描述符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复