zoukankan      html  css  js  c++  java
  • 【Linux学习简记 】数据流重定向<,<<,>,>>,2>,2>>

    什么是数据流?

    数据流分三种,标准输入流(stdin)、标准输出流(stdout)、标准错误输出流(stderr)

    标准输入流默认由键盘输入产生,标准输出流是执行命令时的输出日志,这些日志包含正常的日志输出与命令扫行失败的错误输出,即标准输出流与标准错误输出流

    什么是数据流重定向?

    将本应由键盘输入或输出到屏幕上的数据流重定向到文件或设备上(保存到文件或设备中),称之为数据流重定向

    数据流重定向的作用(应用场景)

    • 屏幕输出信息需要保存
    • 后台执行程序,不想将日志打在桌面上
    • 区分输出标准输出与标准错误输出处理时
    • 丢弃已知错误信息,2> /dev/null

    数据流的代号与表现方式

    • 标准输入(stdin):代码 0,使用 <<< 表示
    • 标准输出(stdout):代码 1,使用 >>> 表示
    • 标准错误输出(stderr):代码 2,使用 2>2>> 表示

    >、>>、2>、2>> 区别

    • > :以【覆盖】的方式,将【正确的数据】输出到文件或设备上
    • >>:以【追加】的方式,将【正确的数据】输出到文件或设备上
    • 2>:以【覆盖】的方式,将【错误的数据】输出到文件或设备上
    • 2>>:以【追加】的方式,将【错误的数据】输出到文件或设备上

    黑洞 /dev/null

    当需要将某些日志不重要的数据流重定向走,但又不想保存文件占用空间时,重定向数据流 /dev/null 设备上,相当于将数据丢入黑洞

    示例:

    将标准输出丢入黑洞

    $ cat /etc/profile > /dev/null
    

    将标准错误输出丢入黑洞

    $ find / -name .bashrc 2> /dev/null
    

    将stdout与stderr输出到同一文件或设备

    非root用户没有权限访问其他用户家目录,会输出错误日志,以下例子由此产生错误信息

    1、【反例】分别设置stdout与stderr到同一文件

    $ find / -name .bashrc > /tmp/stdtestlogs1 2> /tmp/stdtestlogs1
    

    输入流交叉,会导致文件内容次序错乱

    2、【正例1】输出两者到同一文件,语法1 [command]> [file] 2>&1

    $ find / -name .bashrc > /tmp/stdtestlogs2 2>&1
    

    3、【正例2】输出两者到同一文件,语法2 [command] &> [file]

    $ find / -name .bashrc &> /tmp/stdtestlogs3
    

    4、将所有日志输入黑洞

    $ find / -name .bashrc > /dev/null 2>&1
    

    5、将错误日志输入黑洞

    $ find / -name .bashrc 2> /dev/null
    

    标准输入流重定向 < 与 <<

    即,将原本由键盘输入的数据,改由文件内容提供

    在标准输入流重定向中,<<< 作用不是覆盖与追加了,< 表示使用文件提供数据,<< 用来【设置输入结束的字符】

    【例1】:将 ~/.bashrc 输出重定向到 /tmp/stdintest

    $ cat > /tmp/stdintest < ~/.bashrc
    

    【例2】:设置【输入结束字符】,将一段文字输入到 /tmp/stdintest2

    $ cat > /tmp/stdintest2 <<EOF
    这是一条测试
    这是一条测
    这是一条
    这是一
    这是
    这
    EOF
    

    总结自鸟哥私房菜第四版

  • 相关阅读:
    Postman+Newman+Git+JenKins+钉钉(接口自动化测试持续集成)CI_知识回顾与整理
    GitHub 使用入门
    python中json文件处理涉及的四个函数json.dumps()和json.loads()、json.dump()和json.load()的区分
    python实现:重复列表按重复次数排序
    python中lambda匿名函数的用法
    Python中各种符号的意义
    OSI七层协议和TCP/IP的4层、5层协议
    Jmeter中传参输入位置[chrome中区分是否json传参]
    Jmeter中http cookie Manager、Http Header Manager
    jQuery 获取屏幕高度、宽度
  • 原文地址:https://www.cnblogs.com/hellxz/p/linux-data-stream-forward.html
Copyright © 2011-2022 走看看