Linux基础之管理Linux中的输入输出

一、Linux系统中输入输出的定义

1、输入

输入是指系统外接向系统中传递的信息。(eg:键盘、鼠标、输入命令)
Stdin 是标准输入流。

2、输出

输出分为标准正确输出和标准错误输出:
Stdout 标准正确输出:在命令顺利执行完成后产生的字符串。(在Linux中的输出编号为1)
Stderr 标准错误输出:在命令失败执行完成后产生的字符串。(在Linux中的输出编号为2)

3、字符设备

字符设备是指在I/O传输过程中以字符为单位进行传输的设备。(eg: 键盘,打印机)
字符设备是内存中开启的虚拟设备,并不真实存在。

二、重定向

重定向输出的方法:

符号 用途
> 重定向正确输出
2> 重定向错误输出
&> 重定向所有输出

1、> 重定向正确输出

在目录/etc下寻找叫passwd的文件,因为登陆的用户是“test”,所以有的文件没有权限查看。

[test@localhost Desktop]$ find /etc -name passwd                 ##在目录/etc下寻找叫passwd的文件                     
find: ‘/etc/pki/rsyslog’: Permission denied                      ##因为登陆的用户是“test”,所以有的文件没有权限查看
find: ‘/etc/dhcp’: Permission denied
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied

把搜索结果中正确的输出重定向到test.out文件中:

[test@localhost Desktop]$ find /etc -name passwd > test.out            ##把搜索结果中正确的输出重定向到test.out文件中
find: ‘/etc/pki/rsyslog’: Permission denied                            ##错误的结果输出
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied

在这里插入图片描述

2、2> 重定向错误输出

把错误的结果重定向到文件test.err中:

[test@localhost Desktop]$ find /etc -name passwd 2> test.err      ##把错误的结果重定向到文件test.err中
/etc/pam.d/passwd                                                 ##正确的结果输出
/etc/passwd

在这里插入图片描述

3、&> 重定向所有输出

把所有的结果重定向到test.all中:

[test@localhost Desktop]$ find /etc -name passwd &> test.all     ##把所有的结果重定向到test.all中
                                                                 ##没有结果输出

在这里插入图片描述
注意:重定向会覆盖原文件内容!

[test@localhost Desktop]$ cat yang
hello yang
[test@localhost Desktop]$ echo yang > yang
[test@localhost Desktop]$ cat yang 
yang

原文件件中的内容“hello yang”被“yang”所覆盖

三、追加

追加符号:

符号 用途
>> 追加正确输出
2>> 追加错误输出
&>> 追加所有输出

1、>> 追加正确输出

[test@localhost Desktop]$ cat yang 
yang
[test@localhost Desktop]$ find /etc -name passwd >> yang     ##把正确结果追加到文件yang中
find: ‘/etc/pki/rsyslog’: Permission denied                  ##错误结果显示
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
[test@localhost Desktop]$ cat yang                           ##查看文件yang中内容
yang
/etc/pam.d/passwd                                            ##正确输出追加到原文件内容之后
/etc/passwd

在这里插入图片描述

2、2>> 追加错误输出

[test@localhost Desktop]$ echo yang > yang
[test@localhost Desktop]$ cat yang
yang
[test@localhost Desktop]$ find /etc -name passwd 2>> yang       ##把错误结果追加到文件yang
/etc/pam.d/passwd                                               ##正确结果显示
/etc/passwd
[test@localhost Desktop]$ cat yang
yang
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied

在这里插入图片描述

3、&>> 追加所有输出

[test@localhost Desktop]$ echo yang > yang                        ##生成一个含有“yang”的文件yang
[test@localhost Desktop]$ cat yang                                ##查看文件yang中内容
yang
[test@localhost Desktop]$ find /etc -name passwd &>> yang         ##把所有结果追加到文件yang中
[test@localhost Desktop]$ cat yang
yang
find: ‘/etc/pki/rsyslog’: Permission denied                      ##所有结果追加到了文件yang中原有内容之后
find: ‘/etc/dhcp’: Permission denied
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied

注意:追加不会覆盖原文件内容,是追加到原文件的最后。
在这里插入图片描述

四、管道

定义:把输出变成后一条命令的输入

1、| 管道符

[test@localhost Desktop]$ ls /bin | wc -l                      ##统计bin中有多少文件
1612
[test@localhost Desktop]$ find /etc -name passwd | wc -l       ##默认只有正确输出可以通过管道,进入后续处理
find: ‘/etc/pki/rsyslog’: Permission denied                    ##错误结果显示
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
2                                                              ##有两个正确输出

在这里插入图片描述

2、2>&1

2>&1:将编号为1的输出转换为2

[test@localhost Desktop]$ find /etc -name passwd 2>&1 | wc -l   ##把错误输出定向到正确输出存放位置,再通过管道统计
16                                                              ##总共有16个输出

在这里插入图片描述

3、tee

tee:复制输出到指定位置

[test@localhost Desktop]$ find /etc -name passwd 2>&1 | tee file | wc -l    ##把所有输出复制一份存在文件file中,再通过管道统计
16
[test@localhost Desktop]$ cat file
find: ‘/etc/pki/rsyslog’: Permission denied                                 ##所有的输出都保存在了文件file中
find: ‘/etc/dhcp’: Permission denied
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/sssd’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied

在这里插入图片描述

五、输入重定向

输入重定向:用符号从文件中获取输入

1、一次输入重定向

[test@localhost Desktop]$ > yang                       ##清空文件yang中内容
[test@localhost Desktop]$ cat yang
[test@localhost Desktop]$ echo yang lulu > yang        ##在文件yang中写入“yang lulu”
[test@localhost Desktop]$ cat yang
yang lulu
[test@localhost Desktop]$ tr 'a-z' 'A-Z' < yang        ##输入重定向,把yang中小写全部变成大写
YANG LULU

在这里插入图片描述

2、多行输入重定向

编写yang.sh文件:

[root@localhost Desktop]# vim yang.sh

内容为:

passwd <<EOF                ##多行录入起始,起始符为“EOF”
yang                        ##修改密码有设置新密码,再次输入两步
yang
EOF                         ##当起始符再次出现表示录入结束

在这里插入图片描述
调用yang.sh文件,来修改密码:

[root@localhost Desktop]# bash yang.sh
Changing password for user root.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.

注意:多行输入重定向可以用来批量修改密码。

发布了15 篇原创文章 · 获赞 3 · 访问量 690

猜你喜欢

转载自blog.csdn.net/weixin_42006882/article/details/103804821