码迷,mamicode.com
首页 > 系统相关 > 详细

SHELL脚本学习总结--文件描述符和重定向

时间:2016-08-01 12:02:11      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

 文件描述符是与文件输入和输出的相关联的整数,它们用来追踪已打开的文件,文件描述符0,1,2是系统预留的。

    0 --> stdin (标准输入)

    1 --> stdout (标准输出)

    2 --> stderr (标准错误)

$ echo a1>a1
$ cp a1 a2;cp a2 a3
$ cat a*
cat: a1: Permission denied
a1
a1

将0定向到std.txt,将2定向到err.txt

$ cat a* >std.txt 2>err.txt

将0和1都定向到out.txt

$ cat a* >out.txt 2>&1.txt

 

tee命令

  将stdin重定向到文本中并且在屏幕打印出来。

$ cat a*|tee out.txt
cat: a1: Permission denied
a1
a1
$ cat out.txt 
a1
a1

注意:out.txt并不包含“cat: a1: Permission denied”,因为它只能从stdin中进行读取。

默认的tee命令会将文件覆盖,但提供一个-a的选项用于追加。

$ cat a*|tee -a out.txt

重定向脚本内部的文本块
#/bin/bash
sqlplus /nolog <<EOF >log.txt
conn scott/tiger
select * from cat;
commit;
exit
EOF

<<EOF >log.txt和EOF之间的内容会被当做stdin,stdout会被重定向到log.txt。

自定义文件描述符

  •  创建一个文件描述符用于写入

 

$ exec 4>output.txt
$ echo newline >&4
$ cat output.txt 
newline

 

  • 创建一个文件描述符用于读取

 


$ echo hello >input.txt 
$ exec 3<input.txt $ cat <&3 hello

 

 

SHELL脚本学习总结--文件描述符和重定向

标签:

原文地址:http://www.cnblogs.com/zydev/p/5725121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!