文件描述符是与文件输入和输出的相关联的整数,它们用来追踪已打开的文件,文件描述符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
时间: 2024-10-09 10:35:31