Linux系统中的输入输出管理

系统中输入输出管理

  1. 理解系统中的输入输出
    shell中的指令—>CPU产生运算结果—>字符设备
    (默认在/dev/pts)
    输入输出系统是计算机系统中的主机与外部进行通信的系统。它由外围设备和输入输出控制系统两部分组成。在shell中输入指令,在cpu中运算产生结果,再将结果送到字符设备中进行显示。
  2. 管理输入输出的符号
    输出重定向(改变程序的输入来源和输出地点)
    主要的输入方法
>重定向正确的输出
2>重定向错误的输出
&>重定向所有的输出
2>&1把错误结果转换成正确结果然后输出
/dev/null字符特殊文件,它属于空设备用来清除文件中的内容

需要注意的是重定向会覆盖原文件的内容
示例
注意:以下实验必须在普通用户下完成(本实验以student用户为例)
find /etc/ -name passwd > file ###定向正确输出到file
在这里插入图片描述
find /etc/ -name passwd 2> file.err ###定向错误输出到file.err
在这里插入图片描述
find /etc/ -name passwd &> file.all ###定向全部输出到file.all
在这里插入图片描述
> file ###清空file
在这里插入图片描述
输出追加

>>追加正确输出到文件最后
2>>追加错误输出到文件最后
&>>追加所有输出到文件最后

注意:追加不会覆盖源文件的内容,而是在下面重新输出
以下实验必须在student用户(普通用户)下完成

[student@localhost ~]$ date > file
[student@localhost ~]$ find /etc/ -name passwd >> file

在这里插入图片描述

[student@localhost ~]$ date > file.err
[student@localhost ~]$ find /etc/ -name passwd 2>> file.err

在这里插入图片描述

[student@localhost ~]$ date > file.all
[student@localhost ~]$ find /etc/ -name passwd &>> file.all 

在这里插入图片描述
输入重定向
"<"单行输入
eg:

[student@localhost ~]$ vim
[student@localhost ~]$ vim hehe
[student@localhost ~]$ cat hehe
hello world

[student@localhost ~]$ tr 'a-z' 'A-Z' < hehe 
HELLO WORLD

多行输入

<<EOF
内容
EOF(此处的EOF可以为任意组合,但需要前后相同)

eg:利用多行输入更改用户密码

[root@localhost ~]# vim passwd.sh
[root@localhost ~]# cat passwd.sh 
passwd <<EOF
helloaht
helloaht
EOF
[root@localhost ~]# sh passwd.sh 
Changing password for user root.
New password: Retype new password: passwd: all authentication tokens updated successfully.
  1. 管道符的作用
    “|”管道符的作用是把一条指令输出变成后接指令的输入
    注意:
    #管道符只允许正确的输出通过
    #通过管道的输入变成输出,而变成的这些输出或被第二次指令处理
    #如果需要保存这些输出内容,那么需要复制一份输出,用到的命令是"tee"

注意:以下实验必须在student用户(普通用户)下完成

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

[student@localhost ~]$ find /etc/ -name passwd | wc -l
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
2

(2)find /etc/ -name passwd 2>&1 | wc -l ##看到的结果为19,因为2>&1将2转换成为1

[student@localhost ~]$ find /etc/ -name passwd 2>&1 | wc -l
19

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

[student@localhost ~]$ find /etc/ -name passwd 2>&1 |tee file|wc -l
19
[student@localhost ~]$ cat file
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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值