管道与输入输出重定向

输⼊设备 input device ⿏标/键盘
输出设备 output device 显示器

计算机信息输⼊ | stdin - standard input device | 标准输⼊设备

计算机信息输出
1.正确输出 | standard output device 标准正确输出设备
2.错误输出 | standard error device 标准错误输出设备

在linux中,⼀切皆⽂件 | 输⼊设备 | 输出设备

/dev/

0 : stdin - standard input device
1 : stdout - standard output device
2 : stderr - standard error device
null ⿊洞设备
如果信息输出到了stdout/stderr设备,信息会从屏幕中显示出来

1、输出重定向

#1.将标准正确输出 - 重定向 - 到⽂件

# “>” (正确输出)覆盖重定向       (只把加正确的结果覆盖,错误的在屏幕输出)
# “>>” (正确输出)追加重定向     (只把加正确的结果追加,错误的在屏幕输出)

[root@localhost test02]# date > date
[root@localhost test02]# ls
a01  a02  a03  a04  date  test02.tar.gz
[root@localhost test02]# more date
2025年 07月 30日 星期三 21:46:42 CST
[root@localhost test02]# date > date
[root@localhost test02]# more date
2025年 07月 30日 星期三 21:47:20 CST
[root@localhost test02]# date >> date
[root@localhost test02]# more date
2025年 07月 30日 星期三 21:47:20 CST
2025年 07月 30日 星期三 21:48:23 CST
[root@localhost test02]# date >> date
[root@localhost test02]# date >> date
[root@localhost test02]# date >> date
[root@localhost test02]# more date   
2025年 07月 30日 星期三 21:47:20 CST
2025年 07月 30日 星期三 21:48:23 CST
2025年 07月 30日 星期三 21:48:56 CST
2025年 07月 30日 星期三 21:49:00 CST
2025年 07月 30日 星期三 21:49:01 CST

 # “2>” (错误输出)覆盖重定向      (只把加错误的结果覆盖,正确的在屏幕输出)
 # “2>>” (错误输出)追加重定向    (只把错误的结果追加,正确的在屏幕输出)

[root@localhost test02]# Date 2> date
[root@localhost test02]# more date   
bash: Date: 未找到命令...
相似命令是: 'date'
[root@localhost test02]# Date 2>> date
[root@localhost test02]# more date    
bash: Date: 未找到命令...
相似命令是: 'date'
bash: Date: 未找到命令...
相似命令是: 'date'
[root@localhost test02]# Date 2>> date
[root@localhost test02]# Date 2>> date
[root@localhost test02]# Date 2>> date
[root@localhost test02]# Date 2>> date
[root@localhost test02]# more date    
bash: Date: 未找到命令...
相似命令是: 'date'
bash: Date: 未找到命令...
相似命令是: 'date'
bash: Date: 未找到命令...
相似命令是: 'date'
bash: Date: 未找到命令...
相似命令是: 'date'
bash: Date: 未找到命令...
相似命令是: 'date'
bash: Date: 未找到命令...
相似命令是: 'date'

# “&>”   (所有输出)覆盖重定向
# “&>>” (所有输出)追加重定向

# 输出重定向到黑洞  /dev/null

[root@localhost clh]# ls > /dev/null  
[root@localhost clh]# Lls  2> /dev/null

#结果转换重定向     >>"file"  2>&1        >>"file"  1>&2

[root@localhost clh]# Date >> date 2>&1      #错误结果转换为正确的重定向到date文件
[root@localhost clh]# cat date
bash: Date: 未找到命令...
相似命令是: 'date'
2025年 07月 31日 星期四 14:05:35 CST
bash: Date: 未找到命令...                            #错误结果转换为正确的重定向到date文件
相似命令是: 'date'

[root@localhost clh]# Date 2> date_wrong #错误结果重定向到date-wrong文件
[root@localhost clh]# cat date_wrong 
bash: Date: 未找到命令...
相似命令是: 'date'
[root@localhost clh]# date 2>> date_wrong  >&2  #将正确的输出结果转换为错误的重定向追加
[root@localhost clh]# cat date_wrong          
bash: Date: 未找到命令...
相似命令是: 'date'
2025年 07月 31日 星期四 14:12:12 CST  #本身date-wrong文件是记录错误信息,但将正确的输出结果转换为错误的重定向追加了

2、输入重定向   “<”   “<<”

[clh@localhost ~]$ mail -s "test02" root < ~/date     #把date文件的内容作为重定向输入邮件,这时候不再提示 写邮件的内容了

[clh@localhost ~]$ mail -s "test03" root <<END      #作为结束字符,<<作为结束字符
> hello
> i am clh
> .
> .
> END                                                                    #输入END 结束 写邮件
[clh@localhost ~]$ mail -s "test04" root << jjj        #作为结束字符,<<作为结束字符
> hello
> i am clh
> test
> .
> END
> jjj                                                                      #输入jjj 结束 写邮件
[clh@localhost ~]$ 

3、构建管道   “|”

#管道
主要作用: 衔接 / 做两个命令之间的衔接
将命令1的标准输出stdout作为命令2的标准输⼊stdin

 [clh@localhost ~]$ ls
123        123.mp3  date_wrong  find_true  test02      视频  音乐
12345.txt  2341     dd          output01   test02.tar  图片  桌面
1234.txt   456      dd01        standard   公共        文档
12356      date     find_fail   test01     模板        下载
[clh@localhost ~]$ ls | grep "123*"    
123
12345.txt
1234.txt
12356
123.mp3

[clh@localhost ~]$ ls | grep  "*txt" 
[clh@localhost ~]$ ls | grep -E  "*txt" 
12345.txt
1234.txt

[clh@localhost ~]$ ls -lh | wc -l      #查看本地路径⽂件/⽂件夹数量
27

[clh@localhost ~]$ ls -lh | grep -E "^d" | wc -l    # 查看本地路径⽂件夹数
10

[clh@localhost ~]$ echo "i am clh,test05" | mail -s "test05" root 
[clh@localhost ~]$ 

[root@localhost ~]# 
您在 /var/spool/mail/root 中有新邮件
[root@localhost ~]#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值