木榛

导航

05 IO和管道

目录
 
  • 三种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、覆盖和追加
 
 

 

 

posted on 2018-04-04 20:23  木榛  阅读(123)  评论(0编辑  收藏  举报