zoukankan      html  css  js  c++  java
  • linux 输入输出重定向

    文件描述符

    表1:与输入输出有关的文件描述符
    文件描述符文件名类型硬件
    0 stdin 标准输入文件 键盘
    1 stdout 标准输出文件 显示器
    2 stderr 标准错误输出文件 显示器

    Linux Shell 输出重定向

    输出重定向是指命令的结果不再输出到显示器上,而是输出到其它地方,一般是文件中。这样做的最大好处就是把命令的结果保存起来,当我们需要的时候可以随时查询。Bash 支持的输出重定向符号如下表所示。

    类 型符 号作 用
    标准输出重定向 command >file 以覆盖的方式,把 command 的正确输出结果输出到 file 文件中。
    command >>file 以追加的方式,把 command 的正确输出结果输出到 file 文件中。
    标准错误输出重定向 command 2>file 以覆盖的方式,把 command 的错误信息输出到 file 文件中。
    command 2>>file 以追加的方式,把 command 的错误信息输出到 file 文件中。
    正确输出和错误信息同时保存 command >file 2>&1 以覆盖的方式,把正确输出和错误信息同时保存到同一个文件(file)中。
    command >>file 2>&1 以追加的方式,把正确输出和错误信息同时保存到同一个文件(file)中。
    command >file1 2>file2 以覆盖的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。
    command >>file1  2>>file2 以追加的方式,把正确的输出结果输出到 file1 文件中,把错误信息输出到 file2 文件中。
    command >file 2>file 不推荐】这两种写法会导致 file 被打开两次,引起资源竞争,所以 stdout 和 stderr 会互相覆盖,我们将在《结合Linux文件描述符谈重定向,彻底理解重定向的本质》一节中深入剖析。

    在输出重定向中,>代表的是覆盖,>>代表的是追加。

    注意

    输出重定向的完整写法其实是fd>file或者fd>>file,其中 fd 表示文件描述符,如果不写,默认为 1,也就是标准输出文件。

    当文件描述符为 1 时,一般都省略不写,如上表所示;当然,如果你愿意,也可以将command >file写作command 1>file,但这样做是多此一举。

    当文件描述符为大于 1 的值时,比如 2,就必须写上。

    需要重点说明的是,fd>之间不能有空格,否则 Shell 会解析失败;>file之间的空格可有可无。为了保持一致,我习惯在>两边都不加空格。

    Linux Shell 输入重定向

    输入重定向就是改变输入的方向,不再使用键盘作为命令输入的来源,而是使用文件作为命令的输入。

    表3:Bash 支持的输出重定向符号
    符号说明
    command <file 将 file 文件中的内容作为 command 的输入。
    command <<END 从标准输入(键盘)中读取数据,直到遇见分界符 END 才停止(分界符可以是任意的字符串,用户自己定义)。
    command <file1 >file2 将 file1 作为 command 的输入,并将 command 的处理结果输出到 file2。

    参考文档

  • 相关阅读:
    Python3安装
    HTML基础
    Python Socket
    python常用模块
    JSON.stringify的三个参数
    判断数组中存在重复元素
    vant-ui表单验证
    如何计算出浏览器的帧数?requestAnimationFrame
    js判断两个区间是否存在交集
    怎么在组件内部判断出是否插入了slot
  • 原文地址:https://www.cnblogs.com/yan-2010/p/14361480.html
Copyright © 2011-2022 走看看