Linux的输入输出管理

本文介绍了Linux的输入输出管理,包括stdin、stdout、stderr的标准流,以及如何定向输出、清空文件。重点讲解了字符设备、追加输出、管道和输入重定向的使用方法,为用户提供Linux环境下的高级操作指导。
摘要由CSDN通过智能技术生成

1 打开实验环境

rht-vmctl start workstation
rht-vmctl view workstation
rht-vmctl reset workstation

2 输入输出

普通用户操作此实验

2.1 stdin标准输入流

输入是指系统外接向系统中传递的信息
系统外接向系统中传递数据的方式为键盘、鼠标、输入命令。

2.2 stdout标准正确输出

在命令顺利执行完成后产生的字符串
stdout在linux中的输出编号为1
1 省略不写也可以
定向正确到westos.out,其余依旧放到字符设备。

[candy@localhost Desktop]$ find /etc/ -name passwd > westos.out
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/cups/ssl’: 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/libvirt’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/redhat-access-insights’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied

2.3 stderr标准错误输出

定向错误
在命令失败执行完成后产生的字符串
stderr在linux中的输出编号为2

[candy@localhost Desktop]$ find /etc/ -name passwd 2> westos.err
/etc/passwd
/etc/pam.d/passwd

2.4 定向所有 &>

[candy@localhost Desktop]$ find /etc/ -name passwd &> westos.all
[candy@localhost Desktop]$ cat westos.all
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
/etc/passwd
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
/etc/pam.d/passwd
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/grub.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/redhat-access-insights’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied

2.5 清空文件

file

[candy@localhost Desktop]$ > westos.all
[candy@localhost Desktop]$ cat westos.all

3 字符设备

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

[candy@localhost root]$ file /dev/pts/0
/dev/pts/0: character special
输入输出都经过dev/pts/0 ,输出经过/dev/pts/1(正确)或2(错误)输出 ,
但1,2也最终都经过0,如果不想让它定义到/dev/pts/下需要输入输出重定向

4 追加

4.1 追加正确输出

[candy@localhost Desktop]$ cat hh
hh
[candy@localhost Desktop]$ find /etc/ -name passwd >> hh
[candy@localhost Desktop]$ cat hh
hh
/etc/passwd
/etc/pam.d/passwd

4.2 追加错误输出

[candy@localhost Desktop]$ cat hh
hh
[candy@localhost Desktop]$ find /etc/ -name passwd 2>> hh
/etc/passwd
/etc/pam.d/passwd
[candy@localhost Desktop]$ cat hh
hh
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/cups/ssl’: 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/libvirt’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/redhat-access-insights’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied

4.3 追加全部输出

[candy@localhost Desktop]$ find /etc/ -name passwd &>> hh

5 管道

把输出变成后一条命令的输入
管道符默认只能通过正确的
若想通过所有的把错误的转换为正确的,即在管道符前加2>&1

[candy@localhost Desktop]$ find /etc/ -name passwd | wc -l
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/selinux/targeted/active’: Permission denied
find: ‘/etc/selinux/final’: Permission denied
find: ‘/etc/cups/ssl’: 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/libvirt’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/redhat-access-insights’: Permission denied
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/audit’: Permission denied
find: ‘/etc/vmware-tools/GuestProxyData/trusted’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
2
[candy@localhost Desktop]$ find /etc/ -name passwd 2>&1 | wc -l
22

若想保存到file再统计行数:

[candy@localhost Desktop]$ find /etc/ -name passwd 2>&1 | tee file | wc -l
22

6 输入重定向即多行录入(root)

6.1 多行录入

因为password执行时需要输入密码,可以用多行录入解决
切换用户:
gnome-session-quit

[root@localhost Desktop]# cat passwd.sh
date
passwd << EOF
haha
haha
EOF
[root@localhost Desktop]# bash passwd.sh
Sat Apr  4 01:32:34 CST 2020
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.
[root@localhost Desktop]# sh passwd.sh

6.2 单行/一次输入重定向

[root@localhost Desktop]# cat passwd.sh
date
passwd << EOF
haha
haha
EOF
[root@localhost Desktop]# tr 'a-z' 'A-Z' < passwd.sh
DATE
PASSWD << EOF
HAHA
HAHA
EOF

7 Linux如何获得帮助

[root@localhost Desktop]# whatis passwd
passwd (1)           - update user's authentication tokens
sslpasswd (1ssl)     - compute password hashes
passwd (5)           - password file
[root@localhost Desktop]# passwd --help
Usage: passwd [OPTION...] <accountName>
注:[] 可加可不加 ...  可加多个  <> 必须加  
[root@localhost Desktop]# which passwd
/usr/bin/passwd
也可用:
man 1 passwd

若想看/etc/passwd此配置文件的帮助

[root@localhost Desktop]# man 5 passwd

man level target
man 命令本身
level man级别
target man的对象
|
|

lever功能
1命令
2系统调用规则
3函数调用
4系统特殊文件
5系统配置文件
6游戏
7特殊包
8系统管理命令
9内核规则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值