文章目录
- exec操作文件描述符
- 一、exec的基本形式
- 二、案例
- 1、基础命令
- 2、脚本测试
- 三、常见的文件(重定向)
exec操作文件描述符
exec命令可以用来替代当前shell;
换句话说,并没有启动子shell,使用这一命令时任何环境都将被清除,并重新启动一个shell
linux默认文件描述符:
每打开一个shell就会打开默认的三个文件描述符描0,1,2分别代表【标准输入】和【标准输出】及【标准错误输出】
一、exec的基本形式
描述exec命令最贴切通俗的说法是:它践踏了你当前的shell
linux每一个打开文件都会关联一个文件描述符,需要的时候我们可以使用exec命令指定一个大于3的数字作为文件
复制代码
1
2
3
4
5
6exec command 其中,command通常是一个shell脚本 当这个脚本结束了,相应的会话可能也就结束了。 但是,exec在对文件描述符进行操作的时候(也只有在这个时候),它不会覆盖你当前的shell
二、案例
1、基础命令
复制代码
1
2
3
4
5
6
7
81)# 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、脚本测试
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#脚本测试 #!/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命令的操作时进行的)
三、常见的文件(重定向)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14command(命令)> 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操作文件描述符内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复