zoukankan      html  css  js  c++  java
  • 呈现数据-重定向-输入输出描述符

    linux标准文件描述符

    一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

    • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
    • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
    • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

    如果希望 stderr 重定向到 file,可以这样写:

    $ command 2 > file

    如果希望 stderr 追加到 file 文件末尾,可以这样写:

    $ command 2 >> file

    在脚本中重定向输出
     两种方式:
      临时重定向行输出
      永久重定向脚本中的所有命令

    在重定向到文件描述符时,你必须在文件描述符数字之前加一个&:
      echo "this is an error message" >&2
    也可以将STDERR和STDOUT的输出重定向到同一个输出文件。为此bash shell提供了特殊的重定向符号&>.
    当使用&>时,命令生产的所有输出都会发送到同一位置,包括数据和错误。

    默认情况下,linux会将STDERR导向STDOUT。

    如果在运行脚本时重定向了STDERR,脚本中所有导向STDERR的文本都会被重定向。
    ./test 2> test4
    将test文件的所有错误重定向到test4文件中。

    永久从定向
    在脚本中使用exec命令重定向:
    在某脚本中用: exec 1>testout
    把标准输出重定向到testout文件。


    自定义重定向
    文件描述符不止有3个,3~8都可以用来自定义文件描述符。
    可以利用自动以文件描述符,重定向标准文件描述符,实现一个文件中的文件描述符来回切换。
    例:
    exec 3>&1
    exec 1>testout
    exec 1>&3
    3重定向到1,也就是stdout,1重定向到testout文件,最后在把1重定向到3,也就是标准输出。
    如果要关闭一个文件描述符,就把它重定向到特殊符号 &-。
    exec 3>&-
    在脚本中一旦关闭,就不可以在使用文件描述符。否则会报错。

    /dev/null 文件

    如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:

    $ command > /dev/null

    /dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。

    如果希望屏蔽 stdout 和 stderr,可以这样写:

    $ command > /dev/null 2>&1
































  • 相关阅读:
    ComboBoxEdit 方法与属性设置
    Devpress.XtraGrid.GridControl 笔记
    C#中的多线程入门
    comboBox获取value中的值
    sql查询去掉以多列为条件的重复值
    DEV控件:gridControl常用属性设置
    C# MessageBox.Show 用法
    跨服务器与连接不同数据库 不跨服务器连接库存表
    无法初始化链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Jet.OLEDB.4.0" 的数据源对象
    .Net Windows服务程序中获取安装程序所在目录
  • 原文地址:https://www.cnblogs.com/wonchaofan/p/13538978.html
Copyright © 2011-2022 走看看