Shell重定向文件描述符
2015-11-10 20:57
351 查看
#!/bin/bash
最近在看shell,各种困惑,不过解决困惑的感觉还是很不错的。废话少说,linux中使用文件描述符来标识每个文件对象。文件描述符为一个非负整数,可以唯一标识会话中打开的文件。每个过程最多可以有9个文件描述符。
linux使用的标准文件描述符:
标准输入STDIN就是0,标准输出STDOUT就是1,标准错误输出STDERR就是2。而我们也可以自己创建文件描述符3~8。
将今天看到的一段代码:
1 #!/bin/bash
2 exec 3>&1
3 exec 1>test
4 echo "something to output file"
....
....
5 exec 1>&3
6 echo "Now things should be back"
第二行代码使用文件描述符3指向文件描述符1的位置,即标准输出的位置,用于保存标准文件描述符1的位置。之后第三行代码将文件描述符1重定向到文件test,之后再执行后面的代码。在执行到第5行代码时将文件描述符1又重新指向其原来位置。
这种方法就是在脚本程序中临时将输出重定向然后再将输出恢复到通常设置的方法~还是会经常用到的,呼呼~。
还是那句话:Where there is a shell,there is a way!
#exit 0
最近在看shell,各种困惑,不过解决困惑的感觉还是很不错的。废话少说,linux中使用文件描述符来标识每个文件对象。文件描述符为一个非负整数,可以唯一标识会话中打开的文件。每个过程最多可以有9个文件描述符。
linux使用的标准文件描述符:
标准输入STDIN就是0,标准输出STDOUT就是1,标准错误输出STDERR就是2。而我们也可以自己创建文件描述符3~8。
将今天看到的一段代码:
1 #!/bin/bash
2 exec 3>&1
3 exec 1>test
4 echo "something to output file"
....
....
5 exec 1>&3
6 echo "Now things should be back"
第二行代码使用文件描述符3指向文件描述符1的位置,即标准输出的位置,用于保存标准文件描述符1的位置。之后第三行代码将文件描述符1重定向到文件test,之后再执行后面的代码。在执行到第5行代码时将文件描述符1又重新指向其原来位置。
这种方法就是在脚本程序中临时将输出重定向然后再将输出恢复到通常设置的方法~还是会经常用到的,呼呼~。
还是那句话:Where there is a shell,there is a way!
#exit 0
相关文章推荐
- shell批处理中利用vi设置文件的fileformat
- Linux shell 数组使用
- 鸟哥的Linux私房菜读书笔记-第11章-认识与学习bash
- HBase基本概念和hbase shell常用命令用法
- android shell
- Shell脚本教程
- linux shell 正则表达式(BREs,EREs,PREs)差异比较
- mysql触发器内执行shell脚本,shell脚本用curl访问php网页
- awk中使用的shell命令-浅记
- awk调用shell命令
- Shell脚本之awk详解
- 用awk编写Shell脚本
- shell下添加计划性任务
- Awk 命令学习总结、AWk命令系列学习(linux shell)
- shell编程之【告警系统】
- shell里如何完美判断环境变量是否存在?
- linux shell 启动脚本
- shell-bash学习01基础、打印、环境变量
- Linux Shell基础
- 关于makefile和shell脚本的异同:make和bourne again shell--bash