目录
 
  • 三种I/O设备
  • 把I/O重定向至文件
  • 使用管道
 
知识铺垫
 
 
1)查看fd-文件描述符 (L)
 
ll /proc/$$/fd
 
在Linux中,系统打开文件时会随机分配一个编号,用这个编号来对应打开的文件,这个编号就叫做fd(file descriptor)-文件描述符

2) 人为指定fd 
 
exec Number<>Filename

1、三种I/O设备
  • 标准输入(STDIN) Standard In - 0 默认接受来自键盘的输入
  • 标准输出(STDOUT) Standard Out - 1 默认输出到终端窗口
  • 标准输出(STDERR) Standard Error - 2 默认输出到终端窗口
 
注意,这里提到的1种输入设备,2种输出设备,默认分别是来自键盘和终端窗口。默认这样的字眼,
说明我们可以改,即输入未必要来自键盘,输出也未必要输出到终端。
 
怎么做呢?重定向,改变它默认的位置
先来一个简单的

标准输出重定向之一:重定向到终端

1)输出结果重定向到另一个终端窗口

标准输出重定向之二:重定向到文件

2)输出结果还可以重定向到一个文件(最常用的重定向方式)

3)标准错误重定向:将错误信息重定向到文件中去
 
我们随便敲一个不存在的命令,人为地生成一个系统错误。然后将该错误信息重定向保存到一个文件中,如图中error.log的文件。

 
思考?标准输出重定向到文件中有何意义?
标准输出重定向到文件中其实很有用,比如我们经常会对一些命令结果进行分析,那么通过输出重定向可以方便的先将保存到文件中,然后再仔细分析。例如我们想通过history命令来查看一段时间以来的行为,就可以先保存到文件中再分析。
 
3)标准错误重定向:将错误信息重定向到文件中去
 
我们随便敲一个不存在的命令kiilo,人为地生成一个系统错误。然后将该错误信息重定向保存到一个文件中,如图中error.log的文件。
 
2>Filename

4)分别分类重定向
 
>filenameA 2>filenameB

 
5)将标准输出-1和标准错误-2,统一重定向到一个文件里(俗称洗钱)
 
cmd >file >2&1
2>&1 表示将”标准错误-2“重定向到1 ,然后一起发给可all.log文件(注意这里语法的顺序看起来不太自然,但是正确的执行顺序)

 
写法二:新写法
 
cmd &>file    表示将错误和正确信息一起发往all.log文件

写法三
(cmd 2>&1) > file

----------------------------------------------------------------------------------------------------------------------------------------------------

2、支持的操作符:
> 把SDOUT重定向到文件
2> 把SDERR重定向到文件
&> 把所有输出重定向到文件
 
 
3、覆盖和追加
 
 
 

05 IO和管道的更多相关文章

  1. 标准io和管道练习

         标准IO和管道实验练习 [例1]把/etc/fstab文件内容重定向到/tmp目录下文件名为fstab.out 写法: 13:54:35 root@centos ~]#cat /etc/fs ...

  2. 系统学习 Java IO (六)----管道流 PipedInputStream/PipedOutputStream

    目录:系统学习 Java IO---- 目录,概览 PipedInputStream 类使得可以作为字节流读取管道的内容. 管道是同一 JVM 内的线程之间的通信通道. 使用两个已连接的管道流时,要为 ...

  3. Linux标准IO和管道

    Linux标准IO和管道 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.标准输入和输出 程序:指令+数据 读入数据:Input 输出数据:Output 打开的文件都有一个fd: ...

  4. JAVA IO之管道流总结大全(转)

    要在文本框中显示控制台输出,我们必须用某种方法“截取”控制台流.换句话说,我们要有一种高效地读取写入到System.out和 System.err 所有内容的方法.如果你熟悉Java的管道流Piped ...

  5. java io之管道流

    一.java.io中存在一中流叫管道流,类似管道的功能.PipedOutputStream和PipedInputStream分别是管道输出流和管道输入流.这个两个流必须同时使用. 二.作用:进行两个线 ...

  6. 021.14 IO流 管道流

    用的频率不高特点:读取管道和写入管道对接,需要是用多线程技术,单线程容易死锁 使用connect方法连接两个流,实现边读编写,和node.js的管道流差不多 //##主函数位置 public stat ...

  7. 05 IO流(三)——IO流标准流程

    流程 选择源 选择合适的流 操作 关闭流:先打开的后关闭 演示 import java.io.File; import java.io.InputStream; import java.io.File ...

  8. node源码详解(七) —— 文件异步io、线程池【互斥锁、条件变量、管道、事件对象】

    本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource7 本博客同步在https://cnodejs.o ...

  9. Java基础IO类之字符串流(查字符串中的单词数量)与管道流

    一.字符串流 定义:字符串流(StringReader),以一个字符为数据源,来构造一个字符流. 作用:在Web开发中,我们经常要从服务器上获取数据,数据返回的格式通常一个字符串(XML.JSON), ...

随机推荐

  1. Android Studio Fragment 无法获取 id的方法

    在Fragment中,因为继承的父类的不同,导致在Fragment中无法获取到控件的id,此时,只要在获取findviewbyid前加上  getView()就可以了.

  2. ORA-00911: invalid character 包含中文报错

    SQL在pl下正常执行在vs里报错ORA-00911: invalid character. 1.检查SQL末尾是否含有";" 去掉 2.sql包含中文报错 string sql ...

  3. 5种必会的Java异步调用转同步的方法你会几种

    转载请注明本文地址:https://www.jianshu.com/p/f00aa6f66281 源码地址:https://gitee.com/sunnymore/asyncToSync Sunny先 ...

  4. py库:文本转为语音(pywin32、pyttsx)

    http://blog.csdn.net/marksinoberg/article/details/52137547 Python 文本转语音 文本转为语音(使用Speech API) 需要安装 py ...

  5. 【原创】python嗅探QQ消息实战

    目录 需求分析 选型 设计与流程 实现过程 结果展示 1 需求分析   在一些业务场景中需要拿到IM上的通信记录来做一些数据分析,例如对QQ平台中的消息进行领域分类等. 2 选型 环境与工具: pyt ...

  6. centos 7 一键安装gitlab

    # cat /etc/redhat-release CentOS release 6.5 (Final) # strings /lib64/libc.so.6 |grep GLIBC_ 首先升级 如果 ...

  7. 42 【docker】run命令

    最常用的两个option是,网络端口映射,和文件共享 最基本的启动命令(从image创建一个container并启动):docker run -d <image-name> -d:表示守护 ...

  8. 顶级项目孵化的故事系列——Kylin的心路历程【转】

    现在已经名满天下的 Apache Kylin,是 Hadoop 大数据生态系统不可或缺的一部分,要知道在 Kylin 项目早期,可是以华人为主的开源团队,一路披荆斩棘经过几年的奋斗,才在 Apache ...

  9. 【网络编程】time_wait状态产生的原因,危害,如何避免

    转自:https://blog.csdn.net/u013616945/article/details/77510925  做略微修改  仅供个人学习 1. time_wait状态如何产生? 在tcp ...

  10. Python基础-python数据类型(四)

    python数据类型 在python中,变量就是变量,它没有类型,我们所说的类型是变量所指的内存中对象的类型. python中的数据类型: 1.数字 python中没有专门定义常量的方式,通常使用大写 ...