当前位置: 首页 > news >正文

数据流与重定向

数据流与重定向

一、数据流

  • 标准输入(standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入
  • 标准输出(standard output,简称stdout):默认情况下,命令执行所回传正确的信息会输出到屏幕上
  • 标准错误输出(standard error output,简称stderr):默认情况下,标准错误输出可理解为命令执行失败后,所回传的错误信息会输出到屏幕上不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要用数据流重定向将这两条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去,而分别传送所用的特殊字符如下所示:
  • 标准输入(stdin):代码为0
  • 标准输出(stdout):代码为1
  • 标准错误输出(stderr):代码为2

二、重定向

概念

重定向操作符可以将命令输入和输出数据流从默认设备重定向到其他位置。

重定向操作符本身不是命令,而是命令中附加的可改变命令的输入和输出对象的特殊符号。

符号

输出重定向操作符: > >>

输入重定向操作符: < <<

1.输出重定向和追加

  • 用法

    输出重定向	>
    追加		>>命令 >文件 或 命令 1>文件 : 将命令执行后的结果不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件
    命令 2>文件 : 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件
    命令 2>/dev/null : 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是写入到空设备文件(黑洞)中,即将输出的错误信息丢弃掉
    命令 &>文件 命令 >&文件 : 将命令执行后的正确输出信息和错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件
    命令 >>文件 : 将命令执行后的正确输出信息以追加的方式写入到指定的文件中,不覆盖原文件内容,若指定的文件不存在,则自动创建该文件
  • 例(在普通用户下):

    • 输出重定向(覆盖)

      find /etc/ -name passwd > a.txt
      
    • 输出重定向(追加)

      find /etc/ -name passwd >> a.txt
      
    • 错误信息输出重定向(覆盖)

      find /etc/ -name passwd 2> a.err
      
    • 全部信息输出重定向

      find /etc/ -name passwd &> a.txt
      
    • 重定向到空设备(/dev/null)

      find /etc/ -name passwd 2> /dev/null
      

2.输入重定向和多行录入

  • 用法

    命令 <文件 : 使命令从指定的文件中读取数据作为输入
    命令 <<结束标识字符串 : 在命令行读取数据作为输入,直到遇到指定的结束标识字符串
    
  • 例:

    • 从文件读取数据作为cat命令的输入

      # 将timedatectl命令输出到a.txt文件中
      [root@localhost Desktop]# timedatectl > a.txt
      # 查看a.txt内容
      [root@localhost Desktop]# cat a.txtLocal time: Fri 2024-10-25 11:48:13 CSTUniversal time: Fri 2024-10-25 03:48:13 UTCRTC time: Fri 2024-10-25 03:36:59Time zone: Asia/Shanghai (CST, +0800)
      System clock synchronized: noNTP service: inactiveRTC in local TZ: no# 从文件a.txt读取数据作为cat命令的输入
      [root@localhost Desktop]# cat < a.txtLocal time: Fri 2024-10-25 11:48:13 CSTUniversal time: Fri 2024-10-25 03:48:13 UTCRTC time: Fri 2024-10-25 03:36:59Time zone: Asia/Shanghai (CST, +0800)
      System clock synchronized: noNTP service: inactiveRTC in local TZ: no
      [root@localhost Desktop]# 
      
    • 标准输入重定向 << 并不表示追加,而是表示输入结束的意思,即作为一个结束符。

      # EOF 是分隔符,可以是任何字符
      [root@localhost Desktop]# cat > b.txt << EOF
      > hello
      > hello
      > hello
      > hello
      > hello
      > EOF
      [root@localhost Desktop]# cat b.txt
      hello
      hello
      hello
      hello
      hello
      [root@localhost Desktop]#[root@localhost Desktop]# tr 'a-z' 'A-Z' < b.txt
      HELLO
      HELLO
      HELLO
      HELLO
      HELLO
      [root@localhost Desktop]# 

http://www.mrgr.cn/news/58430.html

相关文章:

  • springdata同时集成mongodb和elasticsearch异常
  • 代码编辑组件
  • Django+Vue全栈开发旅游网项目首页
  • 数据结构编程实践20讲(Python版)—19字典树
  • 人工智能+医学
  • 优先算法——移动零(双指针)
  • fastjson/jackson对getter,setter和constructor的区分
  • 代码随想录算法训练营第四十三天|322. 零钱兑换, 279. 完全平方数,139. 单词拆分
  • 揭秘!亿赛通和Ping32如何以加密技术筑牢防泄密防线?
  • MTK使用atms获取app包名编译报错
  • qss设置Q_PROPERTY不生效
  • 从零搭建Lazada自养号高效测评体系
  • 社交媒体与客户服务:新时代的沟通桥梁
  • vue2项目 上传文件时部分信息上传失败,并下载失败信息(.xlsx文件模板)
  • 什么是域名?什么是泛域名?
  • 多线程加锁与手搓智能指针实践
  • 深入拆解TomcatJetty——Tomcat如何实现IO多路复用
  • 获取每个访客的第一条访问日志(获取网站的UV)
  • 「 自动化测试 」面试题..
  • 请简述同步和异步的区别。
  • 【嵌入式】全面解析温度传感器:PT1000、热电偶、热敏电阻与红外传感器的原理与应用
  • 【密码学】隐语HEU同态加密算法解读
  • 5G NR NARFCN计算SSB中心频率MATLAB实现
  • 『 Linux 』网络传输层 - UDP
  • Python自动化测试+邮件推送+企业微信推送+Jenkins
  • css绘制s型(grid)