输入输出重定向与管道的运用和理解

1.理解系统的输入输出

2.管理输入输出的符号
> ##重定向正确输出
2> ##重定向错误的输出
&> ##重定向所有输出
举例:
##输出重定向
[[email protected] ~]$ find /etc/ -name passwd > file ####重定向正确输出到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
[[email protected] ~]$ find /etc/ -name passwd 2> file ###重定向错误输出到file
/etc/passwd
/etc/pam.d/passwd
[[email protected] ~]$ find /etc/ -name passwd &> file ######重定向所有输出到file
[[email protected] ~]$

注意: 重定向会覆盖原文件的内容
以上实验必须在student用户下完成
#######输出追加
>> ##追加正确输出到文件最后
2>> ##追加错误输出到文件最后
&>> ##追加所有输出到文件最后
举例:
[[email protected] ~]$ echo 朱丽丽 >> file ##追加 朱丽丽到file后
[[email protected] ~]$ cat file
2321321321
朱丽丽

########输入重定向
< ####就是将原本需要由键盘输入的数据改由文件内容来替代
举例:利用cat创建一个文件
[[email protected] Desktop]# cat > 123
hahahhah
hahah
hah^C <=====这里按下ctrl+c结束 (其实应该按ctrl+d离开)

[[email protected] Desktop]# cat 123
hahahhah
hahah
我们可以用纯文本文件代替键盘的输入
[[email protected] Desktop]# cat >file < 123
[[email protected] Desktop]# cat file
hahahhah
hahah
[[email protected] Desktop]# ll file 123
-rw-r–r--. 1 root root 15 Jan 8 12:06 123
-rw-r–r--. 1 root root 15 Jan 8 12:13 file
这两个文件的大小一模一样,几乎像cp一样的。

<< 代表结束输入的意思
举例
[[email protected] Desktop]# cat >file <<123
> 真帅
> 123 <======输入关键字,就立刻结束而不需要输入ctel+d
[[email protected] Desktop]# cat file
真帅
[[email protected] Desktop]#

我们那些情况需要要用到输入输出重定向呢
1.屏幕输出的消息很重要,我们需要保存下来
2.后台执行中的程序,不希望它干扰屏幕正常的输出结果时;
3. 一些系统的例行命令的的执行结果,希望可以保存下来
4.一些执行命令的可能已知错误信息时,想以“2>/dev/null”将它丢掉时
5.错误信息与正确信息需要分别输出时

###3.管道的作用##
1.管道的作用
“|”管道的作用是把前一条命令的输出变成最后一条命令的输入
注意:
管道只允许正确的通过 如果需要错误的也通过管道,我们需要欺骗管道,用到的命令是 2>$1
通过管道的输入将会变成输入,而变成输入的这些输出是会被第二条命令处理的
如果需要保存输出内容,呢么需要复制一份输出,需要用到的命令是“tee”
举例: 我们用,ls /bin/|tee 123|wc -l ,命令查看/bin/目录下有多少个文件,并且复制一份到123文件

输入输出重定向与管道的运用和理解
首先换到普通用户
用2>&1欺骗过管道!
输入输出重定向与管道的运用和理解
再把输出复制一份到123文件里
输入输出重定向与管道的运用和理解