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

bash的特性(二)IO重定向与管道

bash的I/O重定向及管道

一、概述

        在shell中,最常使用的fd(file descriptor)有三个,标准输入,标准输出,错误输出。进程用文件描述符来管理打开的文件。

名称

文件描述符

标准输入(stdin)

0

键盘,也可以是其他文件或者命令的输出的内容可以作为标准输入

标准输出(stdout)

1

默认输出到屏幕

错误输出(stderr)

2

默认输出到屏幕

文件名称(filename)

3+

二、I/O重定向:改变标准位置

        标准的输入设备默认指的是键盘,标准的输出设备默认指的是显示器。

      • 输入重定向:指定设备(通常是文件或命令的执行结果)来代替键盘作为新的输入设备;
      • 输出重定向:将原本要输出在屏幕上的结果放到指定的设备(通常是文件)

                < 标准输入重定向

                > 标准输出重定向

                2> 标准错误输出重定向

                &> 把所有输出(标准输出、标准错误输出)重定向

三、输出重定向:

        COMMAND > NEW_POS,COMMAND >> NEW_POS

        >:覆盖重定向,原内容清空

        >>:追加重定向

        注: set -C :禁止将内容重定向到已有文件中

                强制覆盖:>|

                set +C:取消set -C命令的作用

        标准输出和错误输出流分别输出到不同的文件中:

                        COMMAND >> FILENAME1.out 2>>FILENAME2.out

        合并标准输出流和错误输出流到同一个文件中:

                        COMMAND &>> FILENAME.out

       效果同上:COMMAND >>FILENAME.out 2>>&1(注意顺序)

四、输入重定向

命令 < 文件 将指定文件作为命令的输入设备命令 << 分界符 表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符)命令 < 文件1 > 文件2 将文件1作为命令的输入设备,该命令的执行结果输出到文件2 中。

案例1:

        tr命令:转换或删除字符

        tr [OPTION]... SET1 [SET2]

        tr abc ABC < /etc/fstab

案例2:cat是为了将标准输入的内容标准输出,这里将标准输出又重定向到1.log文件。

        多行重定向输出可以使用上述方式,单行重定向可以使用:echo 'abc' > 1.log

五、管道

        COMMAND1 | COMMAND2 | COMMAND3 | ...

                将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN

                STDERR错误重定向不能通过管道转发,可利用2>&1转化后实现

                note:最后一个命令会在当前shell进程的子shell进程中执行。

六、tee命令

tee命令:重定向到多个目标

        格式:命令1 | tee [-a ] 文件名 | 命令2

                把命令1的Stdout先保存在文件中,同时Stdout做为命令2的输入

        例:

http://www.lryc.cn/news/111971.html

相关文章:

  • elb 直接配置到后端服务器组
  • 安卓:BottomNavigationBar——底部导航栏控件
  • 十、用 ChatGPT 辅助写文章
  • 计算机毕设 深度学习猫狗分类 - python opencv cnn
  • 60多行代码仿制B站首页一个好看的卡片效果
  • Redis内网主从节点搭建
  • ESP32-C2开发板 ESP8684芯片 兼容ESP32-C3开发
  • Zebec 创始人 Sam 对话社区,“Zebec 生态发展”主题 AMA 回顾总结
  • 一台电脑给另外一台电脑共享网络
  • AAA 认证
  • jvm-程序计数器
  • NestJs Debug配置文件
  • 题解 | #C.idol!!# 2023牛客暑期多校6
  • 使用filebeat收集并解析springboot日志
  • P1993 小 K 的农场
  • Spring boot 集成 Skywalking 配置 || Skywalking 打不开【已解决】
  • 手把手教你使用 ftrace 对 Linux 系统进行 debug
  • 【练】要求定义一个全局变量 char buf[] = “1234567“,创建两个线程,不考虑退出条件,打印buf
  • iOS Viper架构(中文版)【看懂这篇就够了】
  • 深入理解缓存 TLB 原理
  • 获取k8s scale资源对象的命令
  • 基于ChatYuan-large-v2 语言模型 Fine-tuning 微调训练 广告生成 任务
  • SpringBoot集成Logback日志
  • MATLAB(R2023a)添加工具箱TooLbox的方法-以GPOPS为例
  • 助力618-Y的混沌实践之路 | 京东云技术团队
  • Python系统学习1-4-物理行、逻辑行、选择语句
  • 学习系统编程No.35【基于信号量的CP问题】
  • 词嵌入、情感分类任务
  • TypeScript使用技巧
  • MySQL — InnoDB事务