目录
 
  • 三种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. python3笔记<一>基础语法

    随着AI人工智能的兴起,网络安全的普及,不论是网络安全工程师还是AI人工智能工程师,都选择了Python.(所以本菜也来开始上手Python) Python作为当下流行的脚本语言,其能力不言而喻,跨平 ...

  2. android 开发 更好的数据存放,回调,处理class模式,适合与各种布局适配器class一起使用

    预先导入数据模式: /** * Created by lenovo on 2018/5/18. */ public class DeivceListData { private DeivceListD ...

  3. python3 json.dump乱码问题

    json.dumps(obj, ensure_ascii=False) ensure_ascii = True,会忽略掉non-ascii字符

  4. !!!常用JS代码块 (jquery)

    jquery代码块 <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> ...

  5. 60.纯 CSS 创作一块乐高积木

    原文地址:https://segmentfault.com/a/1190000015369542 感想:y轴旋转,相对定位,今天有点懵呀,唉. HTML code: <!-- 定义dom,容器中 ...

  6. spring 之 注入之 by name or by type, or both ?

    @Autowired 和  @Qualifier 使用xml 注入的时候, 我们可以指定 autowire=“byType” 或“byName” . 但是使用 注解的时候, @Autowired  只 ...

  7. 系统计划 Cron作业 为什么/etc/crontab /etc/cron.d /etc/cron.* 那么多的定义方式????

    当我们要增加全局性的计划任务时,一种方式是直接修改/etc/crontab.但是,一般不建议这样做,/etc/cron.d目录就是为了解决这种问题而创建的.例如,增加一项定时的备份任务,我们可以这样处 ...

  8. css学习1

    1.标签的权值为1,类选择符的权值为10,ID选择符的权值最高为100 注意:还有一个权值比较特殊--继承也有权值但很低,有的文献提出它只有0.1,所以可以理解为继承的权值最低.

  9. netstat 常用参数总结

    netstat 是一个机器网络查看工具 . 网络连接有哪些参数? 

  10. Failed to connect to /127.0.0.1:8080

    参考 https://blog.csdn.net/qq_36523667/article/details/78823065 127.0.0.1为虚拟机的地址,需要将地址改为本机实际地址  ipconf ...