Table of Contents
1.重定向
1> 正确输出重定向(这里因为默认是正确输出,所以这里可以将1省略,写成>)
2> 错误输出存放位置
&> 存放所有
首先以下面的有输出的命令为例,输出结果如下:
[dw@localhost Desktop]$ find /etc/ -name passwd
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: 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
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
[dw@localhost Desktop]$
我们可以看到输出结果有正确的(2条)和错误(14条)的。
现在将正确的结果重定向到file文件中
[dw@localhost Desktop]$ find /etc/ -name passwd >file
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: 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/cups/ssl’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
[dw@localhost Desktop]$ cat file
/etc/pam.d/passwd
/etc/passwd
可以看到只输出错误的,而正确的结果就重定向到了file文件中。
我们再将错误的结果进行重定向:
[dw@localhost Desktop]$ find /etc/ -name passwd 2>file
/etc/pam.d/passwd
/etc/passwd
[dw@localhost Desktop]$ cat file
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: 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/cups/ssl’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
可以看到只输出正确的结果,而错误的结果重定向到了file 文件中。
最后将所有结果进行重定向:
[dw@localhost Desktop]$ find /etc/ -name passwd &>file
[dw@localhost Desktop]$ cat file
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: 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
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
可见所有结果都重定向到了file文件中。
2.追加
>> 追加正确的
2>> 追加错误的
&>> 追加所有
经过上面的例子,我们可以看到每次重定向之后新的结果都会覆盖原来文件里的内容,要想不被覆盖,就要用到追加。
这里用法和重定向的用法一样。
我们这里举例说明:
[dw@localhost Desktop]$ echo hello would > file2
[dw@localhost Desktop]$ cat file2
hello would
[dw@localhost Desktop]$ find /etc/ -name passwd >>file2
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: 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/cups/ssl’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
[dw@localhost Desktop]$ cat file2
hello would
/etc/pam.d/passwd
/etc/passwd
可以看到,追加以后不会覆盖源文件的内容。
3.管道
我们称 | 为管道符,用来将前面的命令的输出作为后面的命令的输入。
首先我们用ls /bin | wc -l 来查看/bin有多少文件
[dw@localhost Desktop]$ ls /bin | wc -l
1506
可以看到用wc -l 命令统计了ls 命令的结果。
我们知道输出有两种,正确的和错误的,管道中默认之处理正确的,例如:
[dw@localhost Desktop]$ find /etc -name passwd | wc -l
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: 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/cups/ssl’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
2
可以看到最后只统计了正确的,错误的正常显示。
如果要统计所有的,我们需要将错误的也进行处理,将正确的和错误的放到一起,可以用2>&1做到,举例:
[dw@localhost Desktop]$ find /etc -name passwd 2>&1 | wc -l
16
[dw@localhost Desktop]$
可以看出结果为所有输出结果的统计。
如果我们还想再继续保存一份的话,可以配合tee 命令,举例:
[dw@localhost Desktop]$ find /etc -name passwd 2>&1 | tee file | wc -l
16
[dw@localhost Desktop]$ cat file
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/grub.d’: 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
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
可以看到结果,先是复制一份输出到file文件再通过管道统计。
4.输入重定向
前面说的都是输出重定向,还有输入重定向,例如:
[dw@localhost Desktop]$ echo westos WESTOS > test2
[dw@localhost Desktop]$ cat test2
westos WESTOS
我们新建一个文件,里面分别输入大写和小写的两个单词以便查看结果。
我们用输入重定向来将文件里的内容交给tr命令作为其输入。
[dw@localhost Desktop]$ echo westos WESTOS > test
[dw@localhost Desktop]$ tr 'a-z' 'A-Z' < test
WESTOS WESTOS
[dw@localhost Desktop]$
可以看到,文件里的内容作了修改。
上面是单行重定向,还可以进行多行重定向,也叫多行录入,例如:
我们用vim test 命令创建一个多行录入脚本,在里面输入以下内容:
passwd <<EOF 多行录入起始
lee
lee
EOF 当起始符再次出现表示录入结束
:wq 最后退出保存
最后使用命令bash test3 执行多行录入脚本,将两行lee分别作为更改用户密码时的两次录入采集,就实现了多行录入。