一、输出重定向
1.正确命令与错误命令的输出重定向(并不常用)
1.1正确命令的重定向
###将命令ls的输出结果(以替换的形式)输出到abc文件中[root@wenhaijin testdir]# ls > abc[root@wenhaijin testdir]# cat abcabctest1test2###再将命令date的输出结果输出到abc文件中[root@wenhaijin testdir]# date > abc###查看输出结果发现文件abc中的内容被覆盖[root@wenhaijin testdir]# cat abcFri Apr 7 02:13:50 CST 2017[root@wenhaijin testdir]# ###符号">"仅仅是写入命令输出的正确结果,如果命令执行出错,则错误输出信息不会被写入[root@wenhaijin testdir]# dataaaaa > abc-bash: dataaaaa: command not found###查看结果发现错误信息并没有写入,同时文件abc中的内容已经被清空[root@wenhaijin testdir]# cat abc[root@wenhaijin testdir]# ###符号">>"将命令的输出结果追加到文件中[root@wenhaijin testdir]# ls >> abc[root@wenhaijin testdir]# cat abcabctest1test2###如果将命令输出错误则并不会将错误信息追加到文件中,当然更不会覆盖文件中的内容[root@wenhaijin testdir]# data >> abc-bash: data: command not found[root@wenhaijin testdir]# cat abcabctest1test2###将date命令的输出追加到文件abc中[root@wenhaijin testdir]# date >> abc###查看发现已经成功追加命令的输出结果[root@wenhaijin testdir]# cat abcabctest1test2Fri Apr 7 02:25:49 CST 2017[root@wenhaijin testdir]#
1.2 错误命令的重定向
###用date命令的错误输出来替换abc文件的内容[root@wenhaijin testdir]# date 2> abcFri Apr 7 02:30:57 CST 2017###查看发现文件abc内容为空,说明date输出正确,并不会写到abc文件中,但是abc文件的内容已经被清空[root@wenhaijin testdir]# cat abc###data是一个错误命令,错误信息被正确写入文件abc中[root@wenhaijin testdir]# data 2> abc[root@wenhaijin testdir]# cat abc-bash: data: command not found###使用"2>>"将错误命令追加到文件中[root@wenhaijin testdir]# lsaaa 2>> abc[root@wenhaijin testdir]# cat abc-bash: data: command not found-bash: lsaaa: command not found[root@wenhaijin testdir]#
注意:
1.在输出错误信息时2>或者2>>之间是没有空格的,不能写成2 >或者2 >>
2.如果输出错误信息,>符号会将对应的文件清空;如果输出正确信息,2>也会将对应的文件清空
3.由于我们在进行输出重定向的时候,并不知道我们的命令输出结果正确与否,所以上面这种方式其实并不常用
2.同时保存正确命令与错误命令的输出信息
2.1覆盖写入
("2>&1"可以理解成现将错误信息合并到正确信息当中,然后统一写到相应的文件中)
###将date命令的输出结果写入文件bcd中,并覆盖掉bcd文件中的内容[root@wenhaijin testdir]# date > bcd 2>&1[root@wenhaijin testdir]# cat bcdFri Apr 7 02:52:09 CST 2017###将data命令的输出结果写入文件bcd中,并覆盖掉bcd文件中的内容[root@wenhaijin testdir]# data > bcd 2>&1[root@wenhaijin testdir]# cat bcd-bash: data: command not found[root@wenhaijin testdir]#
("&>"与"2>&1"的结果相同,但是写法更简洁)
###将date命令的输出写入cde文件中,无论命令正确输出与否[root@wenhaijin testdir]# date &> cde###查看输出结果,发现正确信息被写入[root@wenhaijin testdir]# cat cdeFri Apr 7 03:00:26 CST 2017###将data命令的输出写入cde文件中,无论命令正确输出与否[root@wenhaijin testdir]# data &>cde###查看结果发现错误信息被写入,同时替换掉了原来的信息[root@wenhaijin testdir]# cat cde-bash: data: command not found[root@wenhaijin testdir]#
2.2 追加写入
###将date命令的信息(无论正确与否)追加到def文件中[root@wenhaijin testdir]# date >> def 2>&1[root@wenhaijin testdir]# cat defFri Apr 7 03:08:40 CST 2017###追加写入的另一种方式,与上面的写法等价[root@wenhaijin testdir]# data &>> def[root@wenhaijin testdir]# cat defFri Apr 7 03:08:40 CST 2017-bash: data: command not found[root@wenhaijin testdir]#
2.3 将正确信息与错误信息分开保存
###如果date命令正确执行,则将正确输出追加保存到file_true文件中;如果执行错误,则将错误输出追加写入file_false中[root@wenhaijin testdir]# date >> file_true 2>> file_false[root@wenhaijin testdir]# cat file_true Fri Apr 7 03:13:16 CST 2017[root@wenhaijin testdir]# cat file_false [root@wenhaijin testdir]# ###执行一条错误命令,查看是否已经追加到file_false[root@wenhaijin testdir]# data >> file_true 2>> file_false###查看发现已成功追加写入[root@wenhaijin testdir]# cat file_false -bash: data: command not found[root@wenhaijin testdir]#
二、输入重定向(不常用)
1.先介绍一个命令wc
1.1 wc统计键盘输入
###执行wc命令后开始对键盘的输入信息进行统计[root@wenhaijin testdir]# wc dsfds fdsagfdsfdsfsdggdsagggrgeg gergergg grege 4 7 51[root@wenhaijin testdir]# ###按下CTRL+D介绍键盘输入,同时统计出该输入包括4行 7个单词 51个字节
1.2 wc统计文件信息
[root@wenhaijin testdir]# vim test1helloWorldjelfefe gegfwg;;'gefefewfel fewfewfwf fewfewfewfwefewfewfwefewfewf~~###test1有6行 8个单词 83个字节[root@wenhaijin testdir]# wc test1 6 8 83 test1
2.输出文件的统计信息
###重定向test1文件的统计信息到控制台[root@wenhaijin testdir]# wc < test1 6 8 83###统计test1文件的行数[root@wenhaijin testdir]# wc -l < test16###统计test1文件的单词数[root@wenhaijin testdir]# wc -w < test18###统计test1文件的字节数[root@wenhaijin testdir]# wc -c < test183[root@wenhaijin testdir]#