标准输入输出与管道 

1、标准输入和输出

程序:指令+数据

指令:计算、加减乘除

数据:输入数据、输出数据

2、在Linux中每一个打开的文件都会分配一个当前进程中唯一的文件描述符,用来标识文件的状态

fd:file descripor

3、Linux提供给程序的有三种I/O设备

1、标准输入(stdin)      -0 默认接受来自键盘的输入

2、标准输出 (stdou)    -1 默认输出到终端窗口

3、标准错误   (stderr)  -2 默认输出到终端窗口

4、I/O 重定向:改变默认的输入、输出的位置,重新定位到其他的地方

1、将stdin    stdout   stderr重新定位到文件中

>  stdout  的重新定位

2>    stderr 的重新定位

&>    将所有的输出重新定位

使用了 >  stdout  的重新定位 ,执行结果,将不会输出到,终端上,被重定向到11.txt中,如果该文件不存在,则会被创建

一个错误的命令,使用的是 2 ,默认输出到终端,可以使用  2>重定向到22.txt 文件中,终端就不会打印错误的信息

如果一个命令中既有标准输出、又有标准错误输出,则使用   &> 定位

注意使用    >

2>

&>

这是都是覆盖文件,如果想要追加这则使用

>>

2> >

&> >

2、将标准输入、与标准错误重新全部定位到文件中,除了使用    &>>,还可以如下使用方式,但是注意顺序很重要

4、tr 命令的使用

用途: 转换和删除字符

语法:tr [ - options ....]   set1  set2

-d --delete:删除所有属于第一字符集的字符

-s --squeeze-repeats:把连续重复的字符以单独一个字符表示

-t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符

-c –C --complement:取字符集的补集

5、从文件中导入输入流

1、使用<来重定向标准输入

2、某些命令能够接受从文件中导入的STDIN

3、如cat 、tr等

4、可以多行一起发送给STDIN  ,使用 << EOF终止词

6、管道

1、 管道(使用符号“|”表示)用来连接命令

2、语法:cammand1 | cammand2 | cammand3

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

4、STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现

7、重定向到多个目标(tee)

用法: cammand1 | tee file | cammand2

作用:可以将上一个命令标准输出流定位到文件中,又可以将其传中下一个命令作为其标准的输入流

转载于:https://blog.51cto.com/12302981/2154730

Linux的标准I/O和管道相关推荐

  1. linux 标准输出流管道,初学Linux之标准 I/O 和管道

    初学Linux之标准 I/O 和管道 通常对于程序来讲,输入输出数据的可以是键盘.鼠标.显示器等设备.但是我们输入的是命令,本身并没有输入"显示"这类命令和要求,但是系统就自动的在 ...

  2. Linux入门之inode解析及管道重定向

    Linux入门之inode解析及管道重定向 inode 简介: 当磁盘分区格式化后会根据分区格式.大小等信息来指定分区分配多少个inode表,每个inode表都会有一个在当前分区中唯一的编号,可能有一 ...

  3. Linux操作系统-标准IO库(1)

    Linux操作系统-标准I/O库(1)(2015-8-3) 分类:Linux操作系统   不仅在linux,在很多操作系统上都实现了标准I/O库,该库由ANSI C标准说明.标准I/O库是在系统调用函 ...

  4. Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存

    Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存 参考:<linux编程从入门到精通>,<Linux C程序设计大全>,<unix环境高级编程> ...

  5. [工具]-脚本自动化工具:按照linux kernel标准格式化输出文件(format_file)

    有时候写了一堆文件,从哪里抄来的,或者字节写的,没有按照linux kernel的代码标准,这时候手动去改,非常繁琐 . 写一个python脚本, 自动将源代码文件(如.c文件)格式化/规范化, 如删 ...

  6. 【Linux系统编程学习】匿名管道pipe与有名管道fifo

    此为牛客Linux C++和黑马Linux系统编程课程笔记. 0. 关于进程通信 Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间.任何一个进程的全局变量在另一个进程中都看不到 ...

  7. Linux目录标准FHS介绍

    Linux目录标准FHS介绍 Linux和UNIX的文件系统是一个以"/ "为根的阶层式的树状文件结构,/ 因此被称为根目录.所有的文件和目录都置于根目录/ 之下.根目录/下面有/ ...

  8. 《Linux游戏编程》——理解Linux文件系统标准

    Linux游戏编程 Programming Linux Games [美]John R. Hall 著 作者:[美]John R. Hall 单位:Loki Software, Inc. 时间:200 ...

  9. Linux之标准错误码(全)(三十七)

    Linux之标准错误码(全) Errors: Linux System Errors When system requests fail, error code are returned. To un ...

最新文章

  1. Python中的标准数据类型
  2. 如何从异步调用返回响应?
  3. [YTU]_2641 9 填空题:静态成员---计算学生个数)
  4. 移动开发还有未来吗?
  5. 【C++基础】自定义异常类与多重捕获
  6. java递归遍历删除文件
  7. Java抽象类、接口、类的特殊成员
  8. unc 目录不受支持_Shopify平台对于店铺模版都提供哪些支持
  9. 问题:npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed.
  10. React Native FlatList和SectionList列表组件
  11. 过来人经验告诉你,如何从小菜B晋升为月薪过万的软件测试工程师?
  12. AjaxPro.Dll运用
  13. 数学建模——论文排版
  14. 收费版ESX 与免费版ESXi的区别
  15. PE文件加节感染之Win32.Loader.bx.V病毒分析
  16. Genymotion模拟器的安装和使用
  17. linux bam文件格式,sam和bam格式文件的shell小练习-答案
  18. Quartus II 软件和 DE2-115 开发板使用入门
  19. matlab绘制蔓叶线,powerdraw
  20. 华为云ECS下安装MySQL

热门文章

  1. emqx配置mysql认证,emqx使用mysql完成用户密码验证和ACL鉴权
  2. php启动 大量sess文件,关于PHP中Session文件过多的问题
  3. ssm把后端数据传到前端_前端传数据到后台分别JSON和STRING接收 AJAX SPRINGBOOT ssm
  4. iap java md5_苹果应用内支付(iOS IAP)的流程与常用攻击方式
  5. 为什么整数在python中表示d_python中整数的缓存机制
  6. koa2 mysql 中间件_Koa2 和 Express 中间件对比
  7. ksu7对讲机调频软件_科普 | 数字对讲机的群呼功能原理是什么?你了解多少?...
  8. MySQL命令梳理_MySQL操作命令梳理(2)
  9. java遍历斐波纳契数列_详解循环、迭代、递归、分治(Leet Code 509 斐波那契数列),实际运用...
  10. Java 版本、语言规范、API、JDK、IDE、Java 源程序编译、执行原理(跨平台性根本原因)、特殊字符用法、8 大数据类型小结