##系统中输入输出的管理##
##标准输入、输出以及错误##
运行一个程序时,需要从某个位置读取输入信息,然后CPU处理,最后将输出显示到屏幕或文件
进程通过文件描述的编号通过管道来获取输入或输出
编号 | 通道名称 | 描述 | 默认连接 | 用法 |
---|---|---|---|---|
0 | stdin | 标准输入 | 键盘 | 仅读取 |
1 | stdout | 标准输出 | 显示屏 | 仅写入 |
1、理解系统的输入输出
< ##单行输入 左边<右边 是将左边的命令规则操作于右边的文件中,与左边的无关
eg:
vim westos
WESTOS
tr ‘A-Z’ ‘a-z’ < westos ##只是将westos中的内容表面上是进行了改变,输出出来,但是实际上文件中的内容没有发生改变。
<<EOF ##多行输入EOF开始录入再次出现EOF表示录入结束
EOF
eg:
vim test.sh
passwd <<EOF
123 ##录入到passwd中的第一行(输入密码)
123 ##录入到passwd中的第二行(验证输入的密码)
EOF ##EOF再次出现录入结束
然后执行该文件test.sh,使用命令:[…]#sh test.sh则将密码改成功。写入其他的文件也是可以的。
2、管理输入输出的符号
##输出重定向
> ##重定向正确输出
2> ##重定向错误输出
&> ##重定向所有输出
注意:重定向会覆盖源文件内容
示例:
注意:以下实验必须在student(普通用户)下完成
find /etc/ -name passwd > file ##定向正确输出到file
find /etc/ -name passwd 2> file.err ##定向错误输出到file
find /etc/ -name passwd &> file.all ##定向所有输出到file
> file ##清空file(清空文件内容:>文件名(用空白去覆盖源文件))
##输出追加
>> ##追加正确输出文件最后
2>> ##追加错误输出到文件最后
&>> ##追加所有输出到文件最后
注意:追加不会覆盖源文件内容
示例:
find /etc/ -name passwd >> file ##追加正确输出到file
find /etc/ -name passwd 2>> file.err ##追加错误输出到file
find /etc/ -name passwd &>> file.all ##追加所有输出到file
##3、管道的应用##
1、管道的应用
“|”管道的作用是把前一条命令的输出变成后一条命令的输入
注意:
管道只允许正确输出通过
通过管道的输入将会变成输入,而变成输入的这些输出是会被第二条命令处理的
如果需要保存输出内容,那么需要复制一份输出,用到的命令是"tee"
此实验在普通用户下操作:
find /etc/ -name passwd | wc -l ##会看到的结果为2,因为错误输出不能通过管道
find /etc -name passwd 2>&1 | wc -l ##会看到19,因为编号为2的输出被“2>&1”转换为编号12>&1将错误的改成正确的,将错误的包装一下改成正确的(本质上还是错误的),显示出的是正确与错误的的个数
find /etc -name passwd 2>&1 | tee file | wc -l ##保存一份输出到file再统计行数
##4、输入重定向##
cat >file <<EOF
hello
WORLD
EOF
##5、系统中用户的查看##
id ##查看指定用户id信息
语法: id [-gGnru][–help][–version] [用户名称]
例如:
超级用户:[root@localhost Desktop]# id
uid=0(root) gid=0(root) groups=0(root)
普通用户student:
[root@localhost Desktop]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
uid:UserId,即用户ID,用来标识每个用户的唯一标识符。----->其实就是相当于身份证号一样是唯一的(linux系统规定超级用户的uid为0)
gid:GroupId,即组ID,用来标识用户组的唯一标识符。(主组----->出生地)
groups:(分组----->另一个身份)
扩展:
用户组:将同一类用户设置为同一个组,如可将所有的系统管理员设置为admin组,便于分配权限,将某些重要的文件设置为所有admin组用户可以读写,这样可以进行权限分配。
每个用户都有一个唯一的用户id,每个用户组都有一个唯一的组id。
例如
id
-u ##查看用户的uid
-g(–group) ##查看用户的gid(##显示用户所属群组的ID)
-G(–groups) ##查看用户所在的所有组的id(##显示用户所属附加群组的ID)
-n(–name) ##显示名字而不显示id数字(##显示用户,所属群组或者附加群组的名称)
-r(–real) ##显示用户ID
注意:-n 、-r都是跟随在-ugG后面的
例如:
[root@localhost Desktop]# id -Gn student
student wheel
[root@localhost Desktop]# id -gr student
1000
##6、用户切换##
gnome-session-quit --force ##注销当前用户
在用其他用户登陆
su - 用户名称
su - 中 “-” 标识在用户身份切换时同时切换当前用户的环境
/etc/bashrc ##shell的配置文件
/etc/profile ##系统环境配置文件
su - username 加载/etc/bashrc /etc/profile
su - username 加载/etc/bashrc
su - 执行时高级用户切换到低级用户不需要密码,低级用户切换到高级用户需要密码,平级用户的切换也需要
注意:每次su切换到其他用户操作之后必须退出,然后再次切换到其他用户。