标准输入和输出: 打开的文件都有一个fd:file description(文件描述符)  标准输入(0  STDIN)默认接受来自键盘的输入   标准输出(1  STDOUT)、标准错误(2  STDERR)的默认设备就是当前窗口     I/O重定向是改变默认位置

STDOUT和STDERR可以被重定向到文件:命令   操作符号   文件名            

支持的操作符号包括: > 把STDOUT重定向到文件   2>把STDERR重定向到文件  &>把所有输出重定向到文件

>文件内容会被覆盖 :set -C禁止将内容覆盖已有文件,但可追加    强制覆盖:>|  set +c允许覆盖

>>在原有内容上,追加内容   

标准输出和错误输出各自定向至不同位置:COMMAND > /path/to/file.out 2> /path/to/error.out

重定向和管道_file

合并标准输出和错误输出为同一个数据流进行重定向: &>:覆盖重定向 COMMAND > /path/to/file.out 2> &1

&>>:追加重定向 COMMAND >> /path/to/file.out 2>> &1

重定向和管道_定向_02

():合并多个程序的STDOUT  (cal 2007;cal 2008)> all.txt

重定向和管道_file_03

标准输入的重定向:  例如要群发一封邮件 我们会到用命令:mail -s ____  用户名 

我们可以先用nano命令编辑好一封mail的txt文档  然后发邮件的时候 把编辑好的文档重定向给mail命令: mail -s hi guoquan <mail.txt重定向和管道_定向_04另一位用户就会收到邮件

多行重定向:使用“<<终止词”命令从键盘把多行重导向给STDIN 直到“终止词”位置把文本发给STDIN

重定向和管道_管道_05

tr命令:translate 转换删除字符   tr[OPTION]... SET1 [SET2]  只做显示结果的转换

选项:-c取字符集的补集  -d删除所有属于第一字符集的字符          

-s把重复的字符以单独一个字符表示   -t将第一个字符集对应字符转化成第二个字符集对应字符

例:把小写转换成大写 tr 'a-z' 'A-Z'

重定向和管道_定向_06

也可以利用重定向完成一些需求

例:重定向和管道_file_07

小练习:

一个linux 用户给root 发邮件,要求邮件标题为”help” ,邮件正文如下:Hello, I am 用户名,the system version is here,please help me to check it ,thanks!

重定向和管道_定向_08

管道: | 表示,用来连接命令  命令1|命令2|命令3  只能处理正确结果

|&符号表示 无论对错都处理重定向和管道_定向_09

前面所说的发邮件的命令可以用管道来表示:cat mail.txt | mail -s hi guoquan  结果是一样的

管道处理完是不在屏幕上显示的  既想在屏幕显示 还要处理结果 |tee命令可以实现

重定向和管道_管道_10

练习: 将当前系统登录用户的信息转换为大写后保存至/tmp/who.out

重定向和管道_定向_11

将/root/ 下文件列表,显示成一行,并文件名之间用 空格 隔开

重定向和管道_管道_12