1.命令输出 > 文件名
将命令的输出信息写入到指定文件
2. :> 文件名
把指定的文件断为0长度。如果文件不存在,则传进一个0长度的文件。
“:”是一个占位符,不输出任何内容。
3. > 文件名
把指定的文件断为0长度。如果文件不存在,则传进一个0长度的文件。
在某些shell写可能不工作
4.命令输出>>文件名
将命令的输出信息写入到指定文件。如果文件不存在则创建该文件;如果存在则追加在文件末尾。
5. 1> 文件名
将标准输出内容写入指定文件
6. 1>>文件名
将标准输出追加写入指定文件
7. 2> 文件名
将错误输出内容写入指定文件
8. 2>> 文件名
将错误输出追加写入指定文件
9. &>文件名
将标准输出和错误输出都写入指定文件
10. 2>&1
将错误输出与标准输出一样,发送到一个地方
i > &j 意思是重定向文件描述符i到j,指向i的所有输出都发送到j中去。
>&j这是默认写法,重定向文件描述符1(标准输出)到j
11. 0<文件名 或 <文件名
从文件中接受输入
12. 关闭文件描述符
0<&-或<&- 关闭标准输入
1>&-或>&- 关闭标准输出
n>&- 关闭输出文件描述符n
例1:
#!/bin/bash
exec 6<&0
exec < 2.txt
read a1
read a2
echo
echo $a1
echo "------------------"
echo $a2
exec 0<&6 6<&-
echo "enter data"
read b1
echo "***************"
echo $b1
exit 0
运行结果如下:
本例展现了修改标准输入并回复标准输入默认状态前后的不同。
先创建文件描述符6并将标准输入指向它。
然后将把2.txt作为标准输入文件。
使用read命令从标准输入读2次,然后输出。
把标准输入恢复到默认,再使用read命令,之后输入需要使用键盘输入字符后按enter键。
例2:
Logfile=logfile.txt
exec 6>&1
exec > $Logfile
echo -n "Logfile:"
date
echo "---------------------"
echo
df -h
exec 1>&6 6>&-
ls -l
exit 0
本例展现修改标准输出指向一个文件,然后改回默认的再执行命令输出的差异。
本例输出结果是,df -h命令内容保存在logfile.txt文件中。ls -l命令结果则输出到屏幕。