• 自学Linux Shell14.1-理解输入输出


    点击返回 自学Linux命令行与Shell脚本之路

    14.1-理解输入输出(点击这里获得更多)

    两种显示脚本输出的方法:

    • 在显示器屏幕上显示输出
    • 将输出重定向到文件中

    1. 标准文件描述符

    linux系统将每个对象当做文件处理,这包括输入和输出进程。
    linux系统用文件描述符来标示每个文件对象。
    文件描述符是一个非负整数,可以唯一标识会话中打开的文件。
    每一个进程一次最多可以有9个文件描述符,处于特殊的目的,bash shell保留了前3个文件描述符(0,1,2),如下:

    文件描述符缩写描述
    0 STDIN 标准输入
    1 STDOUT 标准输出
    2 STDERR 标准错误输出
    • <:    从文件中读取内容。
    • >:    将内容插入到文件,每次插入前都会清空文件内容。
    • >>:  将内容插入到文件, 将内容追加到现有文件的末尾

    1.1 STDIN 

    对于终端界面来说,标准输入就是键盘。
    shell从STDIN文件描述符对应的键盘获得输入,在用户输入时处理每个字符。
    使用输入重定向符号<时,linux会用重定向指定的文件来替代标准输入文件描述符,它会读取文件并提取数据,如同在键盘输入的。
    举例1:
    cat命令处理STDIN输入的数据,输入一个就显示一个,按ctrl+c即可结束。

    举例2:
    也可通过使用输入重定向符号 < 时,强制cat命令接受来自另一个非STDIN文件的输入,Linux会重写向指定的文件来替换文字的输入文件描述符。

    1.2 STDOUT 

    在终端界面上,标准输出就是终端显示器。
    shell的所有输出会被定向到标准输出中,也就是显示器

    举例1:
    使用输出重定向 > 来改变输出

    举例2:
    使用输出重写向 >> 可以追加某个文件。

    1.3 STDERR

    Shell通过特殊的STDERR文件描述符来处理错误消息。标准的错误输出。
    shell或shell中运行的程序或脚本出错时声称的错误消息都会发送到这个位置。
    默认情况下,错误信息的输出也会显示到显示器的输出中。

    2. 重定向错误

    有几种办法实现:
    第一种: 只重定向错误。STERR文件描述符被设成2,ls 查看一个/home目录不存在的文件将错误输出到file文件,屏幕上不会显示错误。

    第二种:重写向错误和数据,如果想重写向错误和正常输出,必须用两个重写向符号。STDOUT文件描述符被设为1,STERR文件描述符被设成2。

    第三种:  使用 &>  也可以将STDOUT STDERR的输出重定向到同一个输出文件,且输出的错误数据在最前面以便最近浏览错误信息

    3. 重定向输出

    两种方法在脚本中重定向输出:

    • 临时重定向行输出
    • 永久重定向脚本中的所有输出 exec命令

    3.1 临时重定向行输出

    默认情况下,linux会将STDERR导向STDOUT。但是如果你在运行脚本时重定向了STDERR,脚本中所有导向STDERR的文本会被重定向。

    3.2 永久重定向脚本中的所有输出 exec命令

    如果脚本中有大量数据需要重定向,那重定向echo语句就会很繁琐,所以可以使用exec命令,它告诉shell在脚本执行期间重定向某个特定文件描述符。

    exec命令会启动一个新shell将STDOUT文件描述符重定向到文件testout中。

  • 相关阅读:
    Mysql日期函数,时间函数使用的总结
    java与.net比较学习系列(7) 属性
    java与.net比较学习系列(6) 数组
    java与.net比较学习系列(5) 流程控制语句
    java与.net比较学习系列(4) 运算符和表达式
    java与.net比较学习系列(3) 基本数据类型和类型转换
    java与.net比较学习系列(2) 基础语言要素
    java与.net比较学习系列(1) 开发环境和常用调试技巧
    一个简单的数字处理
    SQLSERVER分页存储过程
  • 原文地址:https://www.cnblogs.com/yaoyaojcy/p/9230055.html
Copyright © 2020-2023  润新知