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

    总结

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

  • 相关阅读:
    《高性能MySQL》读书笔记--Schema与数据类型优化
    小程序从零开始 新手必看(2)
    小程序从零开始 新手必看(1)
    Web 前端
    摒弃 react-redux: 非侵入式状态共享实现
    Web 前端
    Web 前端
    Web 前端
    vue实现打印、批量打印
    JS脱敏带表情的字符串
  • 原文地址:https://www.cnblogs.com/ptfe/p/10965463.html
Copyright © 2011-2022 走看看