Linux重定向管道

指令:


>:输出重定向 |:管道
1>:正确输出
awk:模式扫描与处理语言awk -F “/” ‘{print $2}’
2>:错误输出 print:打印当前记录。输出记录以值终止。
>:覆盖 >>:追加 -F--field-separator(磁场分离器):为输入字段分隔符使用FS
<:输入重定向 xargs:从标准输入重建并执行命令行 -I

*********************************************************************************************************************************************************************************************

重定向


1.输出重定向及综合案例
简介
输出重定向 (覆盖,追加)
正确输出: 1> 1>> 等价于 > >>
错误输出: 2> 2>>
案例1,输出重定向(覆盖和和追加)
[root@tianyun ~]# date 1> date.txt
[root@tianyun ~]# date >> date.txt
观察正确的输出,追加和覆盖的区别

案例2:错误输出重定向

[root@tianyun ~]# ls /home/ /aaaaaaaaa >list.txt
ls: 无法访问/aaaaaaaaa: 没有那个文件或目录
[root@tianyun ~]# ls /home/ /aaaaaaaaa >list.txt 2>error.txt //重定向到不同的位置

案例3: 正确和错误都输入到相同位置
[root@tianyun ~]# ls /home/ /aaaaaaaaa &>list.txt //混合输出
[root@tianyun ~]# ls /home/ /aaaaaaaaa &>/dev/null //空设备,即将产生的输出丢掉
2.输入重定向及结合案例
简介
标准输入: < 等价 0<
案例:输入重定向发送邮件
1 观察默认发送邮件的过程。
[root@tianyun ~]# mail -s "ssss" alice //没有改变输入的方向,默认键盘
111
222
333
. //点代表邮件创建结束。


[root@tianyun ~]# su - alice


[alice@tianyun ~]$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/alice": 1 message 1 new
>N 1 root@tianyun.local Mon Oct 29 14:09 18/657 "ssss"
&
按邮件编号:1.即可看邮件。
按q 退出。
2 使用重定向快速创建邮件

如果已经有了现成的邮件内容呢,如何快速输入邮件内容。
就可以用重定向创建邮件!!!
[root@tianyun ~]# mail -s "test01" alice < /etc/hosts //输入重定向,来自于文件
3.段落标记EOF
段落标记EOF建立多行的文件


[root@tianyun ~]# cat >file4 <<EOF
> 111
> 222
> 333
> EOF
[root@tianyun ~]# cat file4
111
222
333

管道


管道 |
进程管道 Piping
简介
管道命令操作符是:”|”,它只能处理经由前面一个指令传出的正确输出信息,对错误信息信息没有直接处理能力。然后,传递给下一个命令,作为标准的输入.
语法
进程管道
用法:command1 | command2 |command3 |...

【指令1】正确输出,作为【指令2】的输入 然后【指令2】的输出作为【指令3】的输入 ,【指令3】输出就会直接显示在屏幕上面了。
通过管道之后【指令1】和【指令2】的正确输出不显示在屏幕上面
案例1
[root@tianyun ~]# ll /dev/ |less
[root@tianyun ~]# ps aux |grep 'sshd'
案例2:打印当前所有IP
案例5: 打印当前所有IP
[root@tianyun ~]# ip addr |grep 'inet ' |awk '{print $2}' |awk -F"/" '{print $1}'
127.0.0.1
192.168.2.115
tee管道
简介
之前的课程,输出的内容给某一个程序。同时输出到别的地方可以吗?比如文件中去。

下面就是管道的分支,支流。一个命令可以有多个管道,通常我们看到的是最后的结果。
如果想看到其中一段的内容,请使用tee。

案例
[root@tianyun ~]# ip addr |grep 'inet ' |tee ip.txt |awk -F"/" '{print $1}' |awk '{print $2}'
127.0.0.1
172.16.60.1

[root@tianyun ~]# cat ip.txt
inet 127.0.0.1/8 scope host lo
inet 172.16.60.1/24 brd 172.16.60.255 scope global eth0

想追加到某个文件,使用tee -a
参数传递 Xargs
cp rm一些特殊命令,只接受命令行参数中指定的处理内容,不从标准输入中获取处理内容。
xargs:
案例1
案例1
1 环境准备,准备一些文件。
[root@localhost ~]# touch /home/file{1..5}

2 将文件名写入一个文本中。作为输出结果。(假设的环境)
[root@localhost ~]# vim files.txt
/home/file1
/home/file2
/home/file3
/home/file4
/home/file5

3 使用管道,失败。
[root@localhost ~]# cat files.txt |rm -rvf

4.貌似之前的不行。下面加上xargs
[root@localhost ~]# cat files.txt |xargs rm -rvf
removed ‘/home/file1’
removed ‘/home/file2’
removed ‘/home/file4’
removed ‘/home/file5’

案例2
案例2:xargs -I (爱)指定输出标记
1 准备一些环境。创建多个文件。
[root@localhost ~]# touch /home/file{1..5}

2 加入-I标记。进行查看。
[root@localhost ~]# cat files.txt |xargs -I {} ls -l {}
-rw-r--r--. 1 root root 0 Mar 11 10:40 /home/file1
-rw-r--r--. 1 root root 0 Mar 11 10:40 /home/file2
-rw-r--r--. 1 root root 0 Mar 11 10:40 /home/file4
-rw-r--r--. 1 root root 0 Mar 11 10:40 /home/file5
3 加入-I标记。进行复制。
[root@localhost ~]# cat files.txt |xargs -I {} cp -rvf {} /tmp
‘/home/file1’ -> ‘/tmp/file1’
‘/home/file2’ -> ‘/tmp/file2’
‘/home/file4’ -> ‘/tmp/file4’
‘/home/file5’ -> ‘/tmp/file5’
4 加入-I标记,可以使用字符代替。
[root@localhost ~]# cat files.txt |xargs -l XULEI cp -rvf XULEI /var/tmp
‘/home/file1’ -> ‘/var/tmp/file1’
‘/home/file2’ -> ‘/var/tmp/file2’
‘/home/file4’ -> ‘/var/tmp/file4’
‘/home/file5’ -> ‘/var/tmp/file5’

加-i 参数直接用 {}就能代替管道之前的标准输出的内容;
加 -I 参数 需要事先指定替换字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值