Linux云计算学习笔记07 (CentOS 管道与重定向)

一.关于重定向

在Linux系统中,进程在运行过程中会打开一个或多个文件,每次进行这样的操作,会产生文件描述符进程使用文件描述符来管理打开的文件,文件描述符:每打开一个程序都会有文件描述,文件描述符用数字表示。

下表总结了不同情况下文件描述符的表示含义:

数字表示简写名称(其实就是后面描述的英文缩写描述信息读写英文描述
0stdin标准输入只读standard input
1stdout标准输出只写standard output
2stderr标准错误只写standard error
3+filename其他文件读/写,读与写other files

0,标准输入(键盘)
1,标准输出
2,标准错误,
3+,进程在执行过程中打开的其他文件。  
&:表示正确错误混合输出

二、输出重定向 (覆盖,追加)

首先要了解几个符号在Linux系统中的含义:

>   ----覆盖
>>  ----追加
正确输出: 1> 1>> 等价于 > >>
错误输出: 2> 2>>

将data 1 中的内容覆盖到data.txt中:

 [root@myxx.top ~]# date 1> date.txt  #正确输出--覆盖
# 注意:如果 > 前面什么都不加默认为1,标准正确输出。

在date.txt的最后追加date的内容: 

[root@myxx.top ~]# date >> date.txt #正确输出--追加

 错误输出:

[root@myxx.top ~]# ls /home/  /aaaaaaaaa >list.txt
ls: cannot access /aaaaaaaaa: No such file or directory
#上面我们查看一个不存在的文件,系统报错
[root@myxx.top ~]# ls /home/  /aaaaaaaaa >list.txt 2>error.txt #重定向到不同的位置
#这里的2>error.txt中,2表示错误输出,上面语句意思就是将错误输出保存到error.txt中
[root@myxx.top ~]# cat error.txt 
ls: cannot access /aaaaaaaaa: No such file or directory

 &符号代表混合的意思,即无论对错,全部输出到某个文件:

[root@myxx.top ~]# ls /home/  /aaaaaaaaa &>list.txt  #混合输出到相同文件

三、输入重定向 <

(cat > file <<EOF )是用来创建文件或者在脚本中使用,并向文件中输入信息输入的任何东西会被写入文件中,EOF命令结束。

语法:cat > file5 <<EOF  #可以写到脚本或者文件里面
EOF:开始和结束的标记。
成对使用
结尾的另一个必须定格写。

例如往文件中插入内容:

[root@myxx.top ~]# cat >file4 <<EOF
> 111
> 222
> 333
> 444
> EOF
[root@myxx.top ~]# cat file4 
111
222
333
444

四、管道 |

管道符号为: |

管道的含义是将前面命令运行的结果作为后面命令的条件

简单理解就是把前面处理的东西扔给后面处理,就像流水线一样。

如图:rpm -qa是查询所有软件包

grep 'httpd'是过滤有httpd字样的内容

管道就是将前面查询的软件包结果,给后面过滤,这样我们就得到了所有含httpd的软件包信息

[root@myxx.top ~]# rpm -qa  |grep 'httpd'  #查询所有安装的软件包,过滤包含httpd的包
httpd-tools-2.4.6-90.el7.centos.x86_64
httpd-2.4.6-90.el7.centos.x86_64

五、参数传递:xargs

对:ls cp rm  管道不能执行。所以通过xargs。

语法:
 cat a.txt | xargs  -i cp {} /目录  
 {}:前面传过来的内容
 -i :为了让大括号生效
 目录时  -r
 解释:前面传过来的东西交给大括号
 
 cat file.txt |xargs ls -l          
 前面是目录或者目录的路径。  ls - l  后面可以不加大括号,直接执行。

如下图,cat files.txt查看文件

xargs将前面的查看结果放入大括号里面,这样我们就完成了对文件的复制转移。

[root@myxx.top ~]# touch /home/file{1..5}
[root@myxx.top ~]# # cat files.txt | xargs -i cp -rvf {} /tmp/
‘/home/file1’ -> ‘/tmp/file1’
‘/home/file2’ -> ‘/tmp/file2’
‘/home/file3’ -> ‘/tmp/file3’
‘/home/file4’ -> ‘/tmp/file4’
‘/home/file5’ -> ‘/tmp/file5’

最后送一张表情包: 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值