Linux——输入/输出重定向

##系统中输入输出的管理##
##标准输入、输出以及错误##

运行一个程序时,需要从某个位置读取输入信息,然后CPU处理,最后将输出显示到屏幕或文件
进程通过文件描述的编号通过管道来获取输入或输出

编号通道名称描述默认连接用法
0stdin标准输入键盘仅读取
1stdout标准输出显示屏仅写入

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切换到其他用户操作之后必须退出,然后再次切换到其他用户。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值