文件描述符是将一个数字和一个文件名相关联起来的机制,然后使用这个编号向该文件进行读写。有时,文件描述符又称为文件句柄。
标准输入(STDIN),0;标准输出(STDOUT),1;标准错误(STDERR),2
command n>file; command n>> file
标准输出重定向:command 1>file;command 1>>file
标准输入重定向:command 0<file;
command 1>file1 2>file2:将STDOUT重定向到file1,STDERR重定向到file2
exec绑定重定向
上面所讲的输入输出重定向只对当前的指令有效,当需要多次将输入输出重定向到一个文件时,可以利用exec命令。格式如下:
输出重定向:
exex n>file 或exec n>>file
这里n是一个整数,文件file是打开的需要写入的文件。例:exec 4>fd4.out 将fd4.out与文件描述符4相关联。
输入重定向:
exec n<file
将STDOUT和STDERR重定向到一个文件
command >file 2>&1
使用文件描述符
cmd >&n 把输出送到文件描述符n
cmd m>&n 把输出到文件描述符m的信息重定向到文件描述符n(如2>&1)
cmd >&- 关闭标准输出(等同于cmd 1>&-)
cmd n>&- 关闭标准输出文件描述符n
cmd <&n 输入来自文件描述符n
cmd m<&n m来自文件描述符n
cmd <&- 关闭标准输入(等同于cmd 0<&-)
cmd n<&- 关闭输入文件描述符n
cmd <&n- 移动输入文件描述符n而非复制它
cmd >&n- 移动输出文件描述符n而非复制它
简单重定向补充
cmd <<< word 只把word和后面的换行作为输入提供给cmd(区别here document)
cmd <> file 以读写模式把文件file重定向到输入
举例说明
echo “11111” > a.txt 等同于echo “11111” 1>a.txt
>重定向到文件时,会将文件清空,再写入。
> 1.txt 等同于 :>1.txt 清空文件内容
( ls tank; pwd )&>1.txt 将错误信息,以及输出内容放到1.txt文件中
上述语句等同于( ls tank; pwd ) >1.txt 2>&1
<>用法举例:
echo 123456 >2.txt
exec 4<>2.txt #打开2.txt并将内容读取到&4中
read –n 4 <&4 #从&4中读取4个字符
echo –n . >&4 #向&4中写入一个点
exec 4>&- #关闭输出文件描述符4
cat 2.txt #结果为12345.6
没有评论:
发表评论