第十一章 输入输出重定向及管道
我们将要学习:我们将要学习:
1 . 什么是过滤器
2 . 什么是标准输入输出
3 . 怎样改变标准输出
4 . 输出的种类
5 . 改变输入
6 . 管道
1、Linux过滤器
Linux 工具/命令分为三种:
1)过滤器 2)编辑器 3)交互式的工具
2、标准输入输出与重定向
? 输入:过滤器数据来源
–标准输入stdin (0):默认是键盘)
? 输出:过滤器数据去向
–标准输出stdout (1) :默认是终端屏幕
? 错误输出 :报错讯息与标准输出走不同的I/O通道
–标准错误输出stderr(2) :默认是终端屏幕
? 重定向:标准输入输出与错误输出,都可以
用特定符号改变数据来源或去向
[root@localhost li]# ls
[root@localhost li]# > a.sh > 有清空文件,新建文件,重定向一个文件
[root@localhost li]# ll
total 0
-rw-r--r--. 1 root root 0 Jun 30 13:57 a.sh
> 有清空文件,新建文件,把正确的消息重定向一个文件
>2 把一个错误消息重定向过去,或是清空文件
find / -name shrek > a.sh 2>&1 或是find / -name shrek &>a.sh
&>或是2>&1 把正确或是不正确的消息重定向到文件中
>>输出
< 和<<输入重定向
ls /tmp -l |grep ^d |tee a.sh | wc –l 显示所有/tmp中的文件夹的信息保存到a.sh文件中,并在屏幕上显示有多少个文件夹个数
[root@localhost tmp]# ls /tmp -l | grep ^d |tee /tmp/b.sh | wc-l
13
[root@localhost tmp]# cat /tmp/b.sh
drwxr-xr-x. 2 liwei liwei 6 Jun 2419:24 hsperfdata_liwei
中间的省略……….
drwxr-xr-x. 2 root root 6 Jun 23 17:38 hsperfdata_root
[root@localhost tmp]#
tee复制一份到指定的地方
3、输入重定向
? 使用“<”来重定向输入
? 很多工具都设置其后接文件名为输入源
? 也有一些过滤器需要添加 “<”以明确输入源
4、从当前文档输入 追加
? 用 使用 “<<” 让系统将一次键盘的全部输入,先送入虚拟的‘ 当前文档’,再一次性输入追加到文档尾部
? 需要一对字母、符号或字符串作为起始终结标识符
? 选择任意符号作为起始终结标识符
5、输出重定向
?使用 “>” 改变数据输出目标
? 实例:
ls –l /etc > listfile
–将文件以长模式显示, 后写入listfile文件
–文件已有内容会被替代
6、提示:覆盖与追加
? 使用“>”进行输出重定向,文件的原内容会被覆盖
ls –l aa.txt > vi.txt
? 使用>>,可以将输出追加入文件
ls –l aa.txt >> vv.txt
管道
? 用 使用 “|”管道符号将前一个过滤器的输出直接输入到后一个过滤器
ls –l | grep hosts.conf
? 允许多重管道
? 管道前过滤器的输出与管道后过滤器的输入数据类型匹配
例子
? ls /dev |wc –l 统计/dev下有多少文件
? du -a | sort –n –r 显示所有文件大小,并按从大到小排序
? ls –l /etc|grep “^d” 显示/etc文件夹下所有文件夹
? dmesg| more 分屏显示内核信息