zoukankan      html  css  js  c++  java
  • Linux入门基础 #9:管道及重定向



    本文出自   http://blog.csdn.net/shuangde800

    ---------------------------------------------------------------------------------



    不要重复发明轮子


    开源文化的核心理念之一就是不要重复发明轮子,很多开源软件都是现有软件,代码和功能的重新组合,就好像通过零件装配机器一样,源代码的开放和共享让这成为了可能,同时也大大提高了效率和生产率。



    管道和重定向

    在Linux系统中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现和一个或几个很简单的功能,我们可以通过将不同功能的命令组合在一起使用,以达到某个复杂功能的目的。

    在Linux中,几乎所有命令返回数据都是纯文本的(与因为命令都是运行在CLI下),而纯文本形式的数据又是绝大多数命令的输入格式,这就让多命令协作成为可能。

    Linux的命令行为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。



    命令行shell的数据流有以下定义:
     名称  说明  编号  默认
     stdin  标准输入  0  键盘
     stdout  标准输出  1  终端
     stderr  标准错误  2  终端
    命令通过stdin接收参数或数据,通过stdout输出结果或通过stderr输出错误。


    通过管道和重定向我们可以控制CLI的数据流

    重定向:
    关键字 定义 例子
     > 将stdout重定向到文件(覆盖)
    echo "hello world" > outfile 
    ls -l  > outfile
     >> 将stdout重定向到文件(追加)
     echo "hello world"  >> outfile
     date >> outfile
     2> 将stderr重定向到文件(覆盖)  ls   -l   nofile  2>  outfile
     2>&1 将stderr与stdout结合  ls  nofile  > outfile  2>&1
     < 重定向stdin 
    grep  keyword    <  /etc/passwd, 
    在passwd文件中找有关键字keyword的行输出


    管道:
       |
    将一个命令的stdout作为
    另一个命令的stdin
    ls -l  |  grep keyword 
    find / -user shuangde 2 >  /dev/null |  grep Video  
     /dev/null 所有输出放到这里都会被自动丢弃,就像垃圾桶一样

    管道通常是用来组合不同的命令,以实现一个复杂的功能
    重定向通常用来保存某命令的输出信息或错误信息,可以用来记录执行结果或保存错误信息到一个指定的文件


  • 相关阅读:
    注意!!Java-File类
    Hello boke!
    Python 知识要点:变量 可变和不可变
    Python 知识要点:变量及引用
    Python 知识要点:名片管理系统 2.0
    java中x^=y^=x^=y交换整形数据Bug
    servlet读取WEB-INF下txt文件的方法
    设置 load-on-startup 时出错:cvc-complex-type.2.4.a Invalid content was found starting with element 'load
    MyEclipse上访问servlet显示404的问题
    The tomcat server configuration at ServersMyEclipse Tomcat v7.0-config is missinng解决方案
  • 原文地址:https://www.cnblogs.com/pangblog/p/3306341.html
Copyright © 2011-2022 走看看