zoukankan      html  css  js  c++  java
  • Linux 文件描述符和重定向

    Linux 文件描述符和重定向

    2016-04-12 14:08 by pursuer.chen, 4191 阅读, 8 评论, 收藏编辑

    介绍

    文件描述符是与文件输入、输出相关联的整数,在编写脚本时会经常使用标准的文件描述符来将内容重定向输出,0、1、2是文件描述符(分别对应stdin、stdout、stderr),< 、>, >>叫做操作符。

    概念

    stdin(0):标准输入,这个概念有点不太容易理解比如:1.使用<从文件中读取内容,2.当前命令将内容通过管道传输给下一个命令而下一个命令,而实际内容是传输给了stdin所以下一个命令也是从stdin中读取内容。

    stdout(1):标准输出;这是默认选项。使用方法:1>等价于>  或者 1>>等价于>>,;如果想使用其它文件描述符,必须将文件描述符放在操作符之前。

    stderr(2):标准错误,使用方法2>或者2>>,标准错误可以将错误信息插入到文件而不在终端显示  。

    <:从文件中读取内容。

    >:将内容插入到文件,每次插入前都会清空文件内容。

    >>:将内容插入到文件, 将内容追加到现有文件的末尾。

     

    实例

     生成测试数据

    echo "hello word" > test1
    
    cp test1 test2
    
    chmod 000 test2

    stdin(0)

    1.从文本中读取内容

    cat <test1

    2.将读取到的内容通过管道传输给下一个命令

    cat test1 |tr -t 'a-z' 'A-Z' >test1.new

    stdin(1) 

    将内容重定向到文件

    echo "this is stdout 1" >std1

    追加内容到文件

     

    stderr(2)

    遇到报错的时候终端会显示错误,可以将将错误信息写入文件不让终端显示

    同时将stderr和stdout信息都插入到文件,使用&

     

    将错误信息定向标准输出

    echo "name" 2>&1 >> a
    或者
    echo "name" >> a 2>&1

    重定向脚本内部文本块,cat <<EOF>>log.txt EOF

     

    自定义文件描述符

    自定义文件描述符也需要用到exec;< ,>,>>意思和前面解释的一样,当调用自定义的描述符时需要在自定义的描述符前加上&。

    1.自定义stdin,将3定义为stdin从文件中读取内容,然后就可以调用3了,调用3和直接调用文件结果是一样的,有点类似赋值。

    exec 3<test1

    2.自定义stdout,测试结果发现在自定义描述符中使用>往文件中重复写数据并不会清空之前的内容,但是在标准的描述符中是会清空再写入的。

    总结

     文件描述符在脚本中使用的非常频繁,常用的使用方法就是标准输出和标准错误。

  • 相关阅读:
    python中计算程序用时的方法
    既生list何生tuple
    SSAS-时间维度的标准设计
    1092 最好吃的月饼 (20 分
    1091 N-自守数 (15 分)
    1149 Dangerous Goods Packaging (25 分)
    1148 Werewolf
    1144 The Missing Number (20 分)
    1141 PAT Ranking of Institutions (25 分)
    1140 Look-and-say Sequence (20 分)
  • 原文地址:https://www.cnblogs.com/ptfe/p/10965463.html
Copyright © 2011-2022 走看看