1、符号>和>>
> 将命令的标准输出重定向到文件,如果文件有内容则覆盖。
>> 将命令的标准输出重定向到文件,以追加的方式写入文件。
示例1:echo命令的结果重定向到文件。
echo "123" > test.log
示例2:也是echo命令的结果重定向到文件。
for i in `cat 123.log`; do
echo "修改后:"$i;
done >> test.log
2、符号<
将文件内容重定向到命令的标准输入。
注:
(1) 重定向符<具有读取文件的效果。
(2) 命令要是一个需要标准输入的命令,并且这里的“输入”不是指命令的参数。
示例1:
echo < test.log
这里虽然使用<读取了文件内容,但并不能作为echo的参数,打印到标准输出,所以echo的输出还是空。
示例2:
cat < test.log
cat可将标准输入,打印到标准输出,这里就是输出文件内容。同直接使用“cat test.log”是一样的效果。
示例3:
while read row ; do
echo $row ;
done < test.log
使用<读取了文件内容并作为read的输入(该命令是从命令行读取输入的),使用while循环多次执行read,接收文件中的每一行。
cat test.log | while read row ; do
echo $row ;
done
使用管道的方式,达到“<”符号读取文件产生数据流的效果。
示例4:
mysql -p'1234567' < test.log
test.log定义了mysql的相关命令:
status; show databases; use mysql; show tables; |
对于MySQL客户端这种交互型命令,是需要标准输入的,所以可使用“<”读取文件中写好的指令然后在MySQL客户端中执行。
3、<< (Here Document)
将输入的多行文本重定向到命令的标准输入(打开一个标准输入窗口),操作符<<搭配特殊字符(EOF、END等)作为输入的结束。
示例1:
一个常用的经典结构。
cat >> file.txt << EOF
其实这个结构是分为两个部分:
第一,cat可以把标准输入原样输出,搭配重定向符>>将输出写入到文件。
第二,<<操作符可以打开一个标准输入的窗口,并且定义输入的结束信号。
因此,整个过程是由<<操作符定义打开一个标准输入窗口,cat正好可以接收标准输入并输出,使用重定向符>>将输出转向到一个文件,就达到了一个在shell命令行输入内容到文件保存的效果。
示例2:
while read row; do
echo $row
done << EOF
使用read逐步读取在shell中输入的每一行,存储到变量中并打印。
示例3:
sed "s/abc/ABC/g" << EOF
使用shell输入的内容作为sed要处理的数据流。
4、<<< (Here String)
将一个字符串重定向到命令的标准输入;注意与<<操作符的区别是,一个是多行文本,一个仅仅是字符串。
示例1:
cat >> test.log <<< "Hello World."
5、符号>>>
不存在该操作符。