I/O重定向:容许咱们更改输入输出走向,通常,输入到键盘,输出到屏幕linux
cat——链接文件shell
sort——排序文本行bash
uniq——报道或省略重复行less
grep——打印匹配行ui
wc——打印文件中换行符、字和字节个数spa
head——输出文件第一部分code
tail——输出文件最后一部分blog
1、重定向标准输出排序
重定向标准输出到另外一个文件除了屏幕,咱们使用“>"重定向符,其后跟着文件名ip
用>重定向符,输出到另外一个文件
ls-l/usr/bin > ls-output.txt 建立一个长长的目录/usr/bin列表,而且输送程序运行结果到文件ls-output.txt中
使用>重定向符时,存在如下问题
1)制定的目录/usr/bin必须是存在的目录,若是不是存在的目录,如/bin/usr,会产生错误信息并输出到屏幕上
2)产生错误的时候,使用ls-l ls-output.txt会发现,这个目标文件里面是空的,这是由于>重定向的时候是从头开始重写。那么引入>>重定向符
>重定向输出结果时,目标文件老是从开头进行重写,如何将重定向结果追加到文件内容后面,而不是从开头重写文件?咱们使用>>重定向符
ls-l /usr/bin >> ls-output.txt
这样将致使输出结果添加到文件内容以后,若是文件不存在,文件会被建立,就如同>同样了
3)另外,其实能够很好的利用>重定向从头重写目标文件的做用,来删除目标文件中的内容
> ls-output.txt
4)错误消息是返回到显示屏幕上了,咱们有时候是想将其重定向到文件中,该怎么作?
首先,咱们先介绍文件流的前三个看作标准输入、标准输出、错误,shell内部参考他们为文件描述符0、一、2
重定向标准错误:使用2>重定向符
ls-1 /bin/usr 2> ls-error.txt
引伸:
1. 重定向标准输出和错误到同一个文件
ls-l bin/usr > ls-output.txt 2> &1
注意上边的顺序!首先重定义标准输出到文件ls-output.txt,而后重定向文件描述符2(标准错误)到文件描述符1(标准输出)使用表示法2>&1
另外,bash版本提供了一种新的方法,使用&>重定向符
ls-l /bin/usr &> ls-output.txt
2.处理不须要的输出
让其输出到/dev/null文件中,/dev/null文件是系统设备,叫作位存储器,能够接受输入,而且对输入不作处理,可用于隐藏命令错误信息
ls-l /bin/usr 2> /dev/null
2、cat——链接文件
cat是读取一个或多个文件,而后复制他们到标准输出
1.显示文件(到显示屏),相似type命令
cat ls-output.txt
2.链接文件
cat movie.mpeg.0* > moovie.mpeg
3.键盘输入信息,并显示在屏幕上
[me@linuxbox-]-$ cat The quick browm fox junped over the lazy dog.
注意!输入cat换行,再键盘输入目标数据,而后ctrl+d键,告诉cat已经输入到文件末尾
4.键盘输入信息,并重定向到目标文件中
[me@linuxbox-]-$ cat lazy——dog.txt The quick browm fox junped over the lazy dog.
3、管道线
什么是管道线?
命令从标准输入读取信数据,而后再把数据输送到标准输出,命令的这种能力被一个shell特性所利用,这个特性就叫作管道线,使用管道操做符|,一个命令的标准输出能够管道到另外一个命令的输入
command1 | command2 command1命令的结果做为command2的参数,
ls-l /usr/bin | less less是接受标准输入的命令,咱们用less来一页一页地显示任何命令的输出,命令把他们的运行结果输送到标准输出
4、过滤器
接受输入,并以某种方式改变它,而后输出。好比sort
ls /bin /usr/bin | sort | less 把目录/bin和/usr/bin中的可执行命令联合在一块儿,而后把他们排序,最后浏览执行结果
5、uniq——报道或忽略重复行
常与sort一块儿用
ls /bin /usr/bin |sort | uniq | less
若是咱们想看到重复的数据列表,uniq_d
ls /bin /usr/bin |sort | uniq-d | less
6、wc——打印行,字和节数
wc ls-output.txt 会输出三个数,分别是行数,单词数和字节数
若是要强制只输出行数,则用wc-l
ls /bin /usr/bin | sort | uniq |wc-l
7、grep——打印匹配行
grep pattern [file...] patten是模式
ls /bin /usr/bin | sort | uniq | grep zip 输出是zip类型的匹配文件
8、head/tail——打印文件开头和结尾部分
1.head默认打印文件的前10行,若是想改变打印行数,就用head—n
head -n 5 ls-output.txt 打印前5行 tail -n 15 ls-output.txt 打印后15行
2.使用 “-f” 选项, tail 命令继续监测这个文件,当新的内容添加到文件后,它们会当即出如今屏幕上。这会一直继续下去直到你输入 Ctrl-c。
tail -f /var/log/messages
9、tee——从Stdin读取数据,并同时输出到Stdout和文件
tee 程序从标准输入读入数据,而且同时复制数据到标准输出(容许数据继续随着管道线流动)和一个或多个文件
当在某个中间处理阶段来捕捉一个管道线的内容时,这颇有帮助。这里,咱们重复执行一个先前的例子,此次包含 tee 命令,在 grep过滤管道线的内容以前,来捕捉整个目录列表到文件 ls.txt:
ls /usr/bin | tee ls.txt | grep zip