• Shell脚本笔记(六)呈现数据


    呈现数据

    一、文件描述符

    Linux系统将每个对象当做文件处理,这包括输入和输出进程。Linux用文件描述符来标识每个文件对象。每个进程最多可以有9个

    文件描述符,bash shell保留了前三个文件描述符。

    文件描述符                                  缩写                                                    描述

            0-----------------------------------STDIN--------------------------------------标准输入,对于终端界面来说就是键盘

            1-----------------------------------STDOUT-----------------------------------标准输出,对于终端界面来说就是屏幕

            2-----------------------------------STDERR-----------------------------------标准错误,对于终端界面来说就是屏幕

    1.STDIN

    在使用输入重定向符号(<)时, Linux会用重定向指定的文件来替换标准输入文件描述符。
    它会读取文件并提取数据,就如同它是键盘上键入的。

    2.STDOUT

    在使用标准输出将数据导入文件时,如果遇到错误,错误信息是不会被导入到文件中去的。

    3.STDERR

    STDERR文件描述符代表shell的标准错误输出,脚本出错时错误信息都会发送到该位置。

    重定向错误

    ls -al badfile 2> err_log.txt

    同时重定向错误和标准输出到不同文件

    ls -al file1 file2 badfile 1> log.txt 2> err_log.txt

    同时重定向错误和标准输出到同一个文件

    ls -al file1 file2 badfile &> log.txt
    #注意相对于标准输出,bash shell 给与标准错误输出更高优先级

    二、在脚本中重定向输出

    1.临时重定向

    将信息重定向到STDERR

    echo "A error msg" >&2

    2.永久重定向

    exec 1> out.txt

    三、在脚本中重定向输入

    exec 0< in.txt

    四、创建自己的重定向

    1.创建输出文件描述符

    #!/bin/bash
    exec 3> textout
    echo "My output" >&3

    当然也可以使用追加

    exec 3>> out

    2.重定向文件描述符

    #!/bin/bash
    exec 3>&1
    exec 1>out.txt
    #注意此时3指向屏幕,1指向out.txt文件
    echo "Going to 1"
    echo "Going to 3" >&3

    3.创建输入文件描述符

    exec 6<&0
    exec 0<myfile

    4.创建读写文件描述符

    可以打开单个文件同时作为输入和输出

    exec 3<> file

    5.关闭文件描述符

    一般情况下,如果创建了输入或输入文件描述符,shell会在脚本退出时自动关闭它们。但有时候我们需要手动关闭。

    exec 3>&-

    一旦关闭了文件描述符,就不能向它写入任何东西否则会报错。

    6.阻止命令输出

    ls -al /dev/null

    用/dev/null清空文件中的数据

    cat /dev/null > file

    五、创建临时文件

    1.创建本地临时文件

    mktemp testfile
    #会将读写权限分配给owner,文件创建者为owner
    #将文件名保存到变量中
    fileName=$(mktemp testfile)

    2.在/tmp目录创建临时文件

    mktemp -t testfile

    3.创建临时目录    -d

    六、记录消息

    tee命令相当于管道的一个T型接头。它将从STDIN过来的数据同时发往两处。一处是
    STDOUT,另一处是tee命令行所指定的文件名

    命令格式:tee filename

    date | tee test.txt

    -a:为追加

    Simple is important!
  • 相关阅读:
    Python split分割字符串
    test markdown
    Python 数字格式转换
    Python 字符串改变
    Python axis的含义
    python 第三方库
    Spark快速入门
    vim快捷键
    Hadoop HDFS负载均衡
    YARN DistributedShell源码分析与修改
  • 原文地址:https://www.cnblogs.com/Shadowplay/p/8328102.html
Copyright © 2020-2023  润新知