计算机组成部分:

由io 、 控制器、计算器、存储器组成

IO: input output

计算机里面通过终端窗口实现输入和输出,键盘鼠标屏幕这些只是手段,真正完成输入输出的是终端窗口

标准输入、出、错误

在linux中,每打开一个文件,系统会分配一个唯一的数字(文件描述符 --fd)用来代表目前打开的文件,其中有三个数字预留给打开的文件使用(0 1 2 )

  • 标准输入 -- stdin --- 0 --- 对应/dev/stdin设备
  • 标准输出 -- stdout --- 1 --- 对应/dev/stdout设备
  • 标准错误 -- stderr --- 2 --- 对应/dev/stderr设备

输入出错误需要一个设备来实现:

查看默认的输入输出错误的窗口设备 --- ll /dev/std*

默认当前的窗口就是完成实现默认的输入、输出和错误的设备

重定向: redirect

描述: 重新改变linux的输入输出等

输出重定向

输出的信息不在当前窗口完成,而是在指定的设备进行完成。

使用tty命令可以查看当前窗口的终端名称

例如: echo 1346 1> /dev/pts/0 -- 将要输出结果在指定的窗口进行显示

输出重定向的标准写法: 1>(可以省略成 >

  • 1表示的就是输出 --- 标准输出重定向
  • 输出的提示信息算 标准错误输出

将标准输出和标准错误都重定向

重定向到不同的文件:xx 1> f1 2>f2 --- 对的重定向到f1,错的重定向到f2

重定向到同一个文件: xx > xx 2>&1 --- 把标准输出往xx里面写,把错的重定向到1里面 2>&1

2>&1:2表示错误,1表示正确,&符号的作用是表示1是描述符不是文件名1

整体意思就是把错误的输出重定向到1(正确输出的文件)里面去

注意:前后次序有要求。需要先放对的 再放错的

错误示范:xx 2>&1 > xx.txt

这样写不对,因为首先执行的就是把错误重定向到1里面.然而这个时候1自己都不知道该重定向到哪儿,所以就输出到了屏幕,没有实现1和2的重定向.

将标准输出和标准错误都重定向到同一文件的简写方法: &> 或者 >&
cat命令既支持输入重定向,也支持输出重定向。

例如把输入的内容直接生成到文件中 cat > a.txt



输入内容每回车一次就重定向一次

输入重定向

用法1:

比如一个命令原来默认是通过当前终端来进行标准输入的,可以通过一个文件,把文件中的内容输入给它.

用法2:

实现多行重定向<< 单词,提前把多行内容写完,然后再执行重定向

例如: cat > xx << EOF --- 遇到EOF结束

管道:

左侧的标准输出作为右侧的标准输入 --- stdin | stdout

比如实现1+..100: seq -s+ 100 | bc(-s:指定分隔符)

tr命令:

作用: 字符转换和删除

转换:

tr '123' 'abc' -- 把132转换成abc -- 一一对应 1--a 2--b

tr命令需要有输入才能进行转换 不能这样: tr 'xx' 'yy' filename

删除:

删除: tr -d '需要删除的内容'

例如:

实现windos格式向linux格式转换:

tr -d '\r' < 1.txt > 11.txt

windows的文本文件多了个回车符号 所以 tr -d '\r' 文件名(\r:回车 \n:换行 -d:删除指定字符)

tr命令执行删除操作的时候 需要有输入

实例: 查看分区的时候取出分区利用率:

1.将多个连续的空格压缩成一个空格 df | tr -s ' ' (-s:把相同连续的字符合成一个)

2.使用awk 指定空格作为分隔符就取出来了

Linux IO重定向和管道的更多相关文章

  1. 四、IO重定向和管道以及基本文本处理工具

    一.三种IO设备 程序:数据+指令 或 数据结构+算法程序必须能够读入输入然后经过加工来产生结果,其接受的输入可以是变量.数组.列表.文件等等,生产出来的结果可以使变量.数组.列表.文件等等.即:程序 ...

  2. IO重定向与管道

    一.三种IO设备 程序:数据+指令 或 数据结构+算法 程序必须能够读入输入然后经过加工来产生结果,其接受的输入可以是变量.数组.列表.文件等等,生产出来的结果可以使变量.数组.列表.文件等等.即: ...

  3. Linux Shell 重定向与管道【转帖】

    by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...

  4. Linux中重定向及管道

    1重定向1.1      重定向符号 >               输出重定向到一个文件或设备 覆盖原来的文件 >!              输出重定向到一个文件或设备 强制覆盖原来的 ...

  5. Linux数据流重定向与管道

    数据流重定向简单来说就是把原本应该输出到某处(比如说屏幕)的数据,重定向其输出目的地,到其他的地方(比如文件). linux中的输入与输出: 标准输入(stdin):默认从键盘输入 标准输出(stdo ...

  6. Linux的重定向与管道

    (1).输出重定向 定义:将命令的标准输出结果保存到指定的文件中,而不是直接显示在显示器上. 输出重定向使用>和>>操作符. 语法:cmd > filename,表示将标准输出 ...

  7. 【Linux】重定向与管道

    重定向 redirection 每个命令有输入源和输出目的地,默认行为,是标准输入和标准输出.大多数情况,标准输入是键盘,标准输出是屏幕.可以为单独的操作修改输入和输出,这就是重定向.重定向可以使某个 ...

  8. linux - 输入输出重定向 及 管道

    > 正确结果重定向 2> 错误结果重定向 &> 正确和错误全部重定向 >> 追加,其它同> 标准输出实际上就是显示器,比如我们使用cat命令打开一个文件,文 ...

  9. linux学习14 Linux运维高级系统应用-glob通配及IO重定向

    一.回顾 1.bash基础特性:命令补全,路径补全,命令引用 2.文件或目录的复制,移动及删除操作 3.变量:变量类型 存储格式,数据表示范围,参与运算 二.bash的基础特性 1.globbing: ...

随机推荐

  1. Grafana插件Plugin中文汉化

    示例Github地址 汉化三方插件 前面说过汉化Grafana的工作.目前在7.2.1上面,大部分已经完成.细节继续完善. 今天考虑在第三方插件上做一些汉化.点到插件一看全是英文感觉很突出.领导看到了 ...

  2. CF problem: (D) Maximum Product Strikes Back

    Problem - D - Codeforces Example input 5 4 1 2 -1 2 3 1 1 -2 5 2 0 -2 2 -1 3 -2 -1 -1 3 -1 -2 -2 out ...

  3. .NET 7 预览版2 中的 ASP.NET Core 更新

    .NET 7 预览版2 现已推出,其中包括对ASP.NET Core 的许多重大改进. 以下是此预览版中新增内容的摘要: 推断来自服务的API 控制器操作参数 SignalR 集线器方法的依赖注入 为 ...

  4. OpenHarmony 3.1 Beta版本关键特性解析——分布式DeviceProfile

    (以下内容来自开发者分享,不代表 OpenHarmony 项目群工作委员会观点) 成翔 OpenAtom OpenHarmony(以下简称"OpenHarmony")作为分布式操作 ...

  5. FreeRTOS --(15)信号量之概述

    转载自 https://blog.csdn.net/zhoutaopower/article/details/107359095 在裸机编程中这样使用过一个变量:用于标记某个事件是否发生,或者标志一下 ...

  6. Abp集成HangFire

    简要说明 后台作业在系统开发的过程当中,是比较常用的功能.因为总是有一些长耗时的任务,而这些任务我们不是立即响应的,例如 Excel 文档导入.批量发送短信通知等. ABP vNext 提供了后台作业 ...

  7. vue-core-video-player-基于vue.js的视频播放器组件

    一 介绍 一款基于 vue.js 的轻量级的视频播放器插件插件 个性化配置 i18n 服务端渲染 画中画模式 事件订阅 易于开发 移动端适配 1.1 官方文档 https://core-player. ...

  8. 优化 Docker 镜像大小常见方法

    平时我们构建的 Docker 镜像通常比较大,占用大量的磁盘空间,随着容器的大规模部署,同样也会浪费宝贵的带宽资源.本文将介绍几种常用的方法来优化 Docker 镜像大小,这里我们使用 Docker ...

  9. 老生常谈系列之Aop--CGLIB动态代理的底层实现原理

    老生常谈系列之Aop--CGLIB动态代理的底层实现原理 前言 上一篇老生常谈系列之Aop--JDK动态代理的底层实现原理简单讲解了JDK动态代理的实现,动态代理常用实现里面的双子星还有另一位--CG ...

  10. 基于 range 的 for 循环和 auto

    基于 range 的 for 循环和 auto C++11 引入一种循环的新形式,叫基于 range 的 for 循环,它允许我们用更简单易读的形式遍历容器中的所有元素 vector<int&g ...