zoukankan      html  css  js  c++  java
  • 4. 重定向(重点)

    I/O重定向:允许我们更改输入输出走向,一般,输入到键盘,输出到屏幕

    cat——连接文件

    sort——排序文本行

    uniq——报道或省略重复行

    grep——打印匹配行

    wc——打印文件中换行符、字和字节个数

    head——输出文件第一部分

    tail——输出文件最后一部分

     一、重定向标准输出

      重定向标准输出到另一个文件除了屏幕,我们使用“>"重定向符,其后跟着文件名

    用>重定向符,输出到另一个文件

    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、1、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

     

    二、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.

     

    三、管道线

    什么是管道线? 

               命令从标准输入读取信数据,然后再把数据输送到标准输出,命令的这种能力被一个shell特性所利用,这个特性就叫做管道线,使用管道操作符|,一个命令的标准输出可以管道到另一个命令的输入

    command1 | command2     command1命令的结果作为command2的参数,
    ls-l /usr/bin | less   less是接受标准输入的命令,我们用less来一页一页地显示任何命令的输出,命令把他们的运行结果输送到标准输出

     

    四、过滤器

           接受输入,并以某种方式改变它,然后输出。比如sort

    ls /bin /usr/bin | sort | less    把目录/bin和/usr/bin中的可执行命令联合在一起,然后把他们排序,最后浏览执行结果

     

    五、uniq——报道或忽略重复行

              常与sort一起用

    ls /bin /usr/bin |sort | uniq | less

    如果我们想看到重复的数据列表,uniq_d

    ls /bin /usr/bin |sort | uniq-d | less

     

    六、wc——打印行,字和节数

    wc ls-output.txt
    会输出三个数,分别是行数,单词数和字节数

    如果要强制只输出行数,则用wc-l

    ls /bin /usr/bin | sort | uniq |wc-l

     

    七、grep——打印匹配行

    grep pattern [file...]     patten是模式
    ls /bin /usr/bin | sort | uniq | grep zip   输出是zip类型的匹配文件

     

    八、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

     

    九、tee——从Stdin读取数据,并同时输出到Stdout和文件

    tee 程序从标准输入读入数据,并且同时复制数据到标准输出(允许数据继续随着管道线流动)和一个或多个文件

    当在某个中间处理阶段来捕捉一个管道线的内容时,这很有帮助。这里,我们重复执行一个先前的例子,这次包含 tee 命令,在 grep过滤管道线的内容之前,来捕捉整个目录列表到文件 ls.txt:

    ls /usr/bin | tee ls.txt | grep zip
    
    
  • 相关阅读:
    Oracle学习笔记(一)——B-Tree索引
    B+树索引
    B树和B+树原理及在索引中的应用
    B树索引
    MySQL用B+树(而不是B树)做索引的原因
    细说mysql索引
    How to write XML-RPC clients
    How to write XML-RPC clients
    渲染流程(下):HTML、CSS和JavaScript是如何变成页面的
    渲染流程(上):HTML、CSS和JavaScript是如何变成页面的
  • 原文地址:https://www.cnblogs.com/xiaoxiaohui2015/p/5777976.html
Copyright © 2011-2022 走看看