4. 重定向(重点)

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
相关文章
相关标签/搜索