Linux的系统I/O重定向

1.理解系统的输入输出

2.管理输入输出的符号

1.输出重定向
命令 用法
> file 重定向正确输出file
2> file2 重定向错误输出file2
&> file3 重定向所有输出到file3

注意:重定向会覆盖原文件的内容

以“查找/etc/下的名字含有’passwd’的文件为例“

[student@localhost ~]$ find /etc/ -name passwd > file	##重定向/etc/下名字为"passwd"的文件名的正确输出到file
find: ‘/etc/pki/CA/private’: Permission denied			##以下均为错误输出
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/selinux/targeted/modules/active’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied

效果如图
在这里插入图片描述

[student@localhost ~]$ cat file			##查看文件file内容
/etc/passwd								##结果符合上述操作
/etc/pam.d/passwd

效果如图
在这里插入图片描述

[student@localhost ~]$ find /etc/ -name passwd 2> file1		##重定向/etc/下名字为"passwd"的文件名的错误输出到file1
/etc/passwd													##均为正确输出
/etc/pam.d/passwd

效果如图
在这里插入图片描述

[student@localhost ~]$ cat file1					##查看文件file1内容
find: ‘/etc/pki/CA/private’: Permission denied		##结果符合上述操作
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/selinux/targeted/modules/active’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied

效果如图
在这里插入图片描述

[student@localhost ~]$ find /etc/ -name passwd &> file2			##重定向/etc/下名字为"passwd"的文件名的所有输出到file2
[student@localhost ~]$ 

效果如图
在这里插入图片描述

[student@localhost ~]$ cat file2					##查看文件file2内容
find: ‘/etc/pki/CA/private’: Permission denied		##错误输出
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/audit’: Permission denied
/etc/passwd													##正确输出
find: ‘/etc/polkit-1/rules.d’: Permission denied			##错误输出
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/selinux/targeted/modules/active’: Permission denied
/etc/pam.d/passwd											##正确输出
find: ‘/etc/lvm/archive’: Permission denied					##错误输出
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied

效果如图
在这里插入图片描述

2.输出追加
命令 用法
>> 追加正确输出到文件最后
2>> 追加错误输出到文件最后
&>> 追加所有输出到文件最后

注意:追加不会覆盖原文件内容

3.管道的应用

①管道的作用
"|"管道的作用是把前一条命令的输出变成后一条命令的输入

注意:
①管道只允许正确输出通过
②通过管道的输出将会变成输入,而变成输入的这些输出是会被第二条命令处理的
③如果需要保存输出内容,那么需要复制一份输出,用到的命令是“tee”

普通用户操作:

        find /etc/ -name passwd | wc -l         		##看到的结果为2,错误输出不能通>过管道

“效果如图“
在这里插入图片描述

        find /etc/ -name passwd 2>&1 | wc -l    		##会看到19,编号为2的输出会被“2>&1”转换为编号1.

“效果如图“
在这里插入图片描述

        find /etc/ -name passwd 2>&1 | tee file | wc -l ##保存一份输出到file再统计行数。

“效果如图“
在这里插入图片描述
文件file内容
在这里插入图片描述

4.输入重定向

语法为:

command < file

这样,本来需要从键盘获取输入的命令会转移到文件读取内容。

注意:输出重定向是大于号(>),输入重定向是小于号(<)。

例如,计算usb_modeswitch.conf 文件中的行数,可以使用下面的命令:

[student@localhost ~]$ wc -l < /etc/usb_modeswitch.conf 
27

效果如图
在这里插入图片描述

输入和输出的学习就是这些,这次的体验中对于管道符的印象很深刻,它的作用简直太过“IMBA”,借助它,可以完成若干个指令的并行执行。

猜你喜欢

转载自blog.csdn.net/qq_43570369/article/details/85877182