文件输入输出的管理

1.输入输出的定义

输入:
    就是我们的键盘,鼠标和我们用这些硬件在系统录入的字符
输出:
    就是系统接收到我们想要实现的功能字符后,经过进程的处理产生字符
输出会有两种出现:
    编号1为正确输出
    编号2为错误输出
默认这两种输出都会被系统定向到字符设备中

2.如何管理输入

(1)非交互式单行录入
echo + 录入内容 + >> 文件名
 注:不用vim便可直接在文件中写东西
[root@localhost ~]# echo westos >> file1
[root@localhost ~]# cat file1
westos

这里写图片描述

(2)交互式多行录入
##以修改当前用户密码为例
#不能自动运行
vim C_pass.sh
#########
passwd 

sh C_pass.sh
[root@foundation66 Desktop]# vim C_pass.sh
[root@foundation66 Desktop]# cat C_pass.sh 
passwd
[root@foundation66 Desktop]# sh C_pass.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.

这里写图片描述

(3)非交互式多行录入
方法1:
##以修改当前用户密码为例
#可以自动运行避免交互
vim C_pass.sh
#########
passwd <<END
lee
lee
END

sh C_pass.sh
[root@foundation66 Desktop]# vim C_pass.sh
##密码需要写两次 第二次是确认密码
[root@foundation66 Desktop]# cat C_pass.sh 
passwd <<END
lee
lee
END
[root@foundation66 Desktop]# sh C_pass.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.

这里写图片描述

方法2:
cat  >  文件名 << EFO
录入内容
EFO
[root@foundation66 Desktop]# cat > file << EFO

> westos
> linux
> my love
> EFO
[root@foundation66 Desktop]# cat file
westos
linux
my love

这里写图片描述
3.如何管理输出

(1)重定向:
>		#重定向正确输出
2>		#重定向错误输出
&>		#重定向所有输出
2>&     #把错误输出的编号由2转换为1

请用student用户做以下实验:

find /etc/ -name passwd  > file.out     ##此命令在student用户下执行因为权限问题会报错$

这里写图片描述
这里写图片描述

find /etc/ -name passwd 2> file.out

这里写图片描述

find /etc/ -name passwd &> file.all

这里写图片描述

find /etc/ -name passwd > file 2>&1    #2>&1将编号2的错误输出转换成编号为1
##注意:重定向是会覆盖原文件内容
[kiosk@foundation66 ~]$ vim westos
[kiosk@foundation66 ~]$ cat westos
hello linux!
[kiosk@foundation66 ~]$ find /etc/ -name passwd > westos
[kiosk@foundation66 ~]$ cat westos
/etc/passwd
/etc/pam.d/passwd

这里写图片描述
这里写图片描述

(2)追加:
#保持原文件内容不变的情况下把输出追加到文件之后
>>		##追加正确输出
2>>		##追加错误输出
&>>		##追加所有输出
[kiosk@foundation66 ~]$ find /etc/ -name passwd >> westos
[kiosk@foundation66 ~]$ find /etc -name passwd 2>> westos
[kiosk@foundation66 ~]$ cat westos

这里写图片描述

[kiosk@foundation66 ~]$ find /etc -name passwd &>> files
[kiosk@foundation66 ~]$ cat files

这里写图片描述

##重定向与追加二者的区别:
追加可以在保持原文件内容不变的情况下把输出追加到文件之后而重定向会覆盖原文件的内容
(3)管道:
#把输出变成下一个程序的输入
#管道是用来组合多条命令的使用的
[kiosk@foundation66 ~]$ ls /bin | wc -l
2902

这里写图片描述

注意:通过管道后输出会变成输入,那么是无法保存在文件中的
(4)tee命令     ##复制输出到指定位置
[kiosk@foundation66 ~]$ ls /bin | tee file | wc -l
2902
[kiosk@foundation66 ~]$ cat file

这里写图片描述
练习1

1.显示当前时间 , 显示格式为 hh:mm:ss, 并保存到文件 time.txt文件中

[student@localhost ~]$ date --help
Usage: date [OPTION]... [+FORMAT]
..............
FORMAT controls the output.  Interpreted sequences are:
..............
%H   hour (00..23)
%M   minute (00..59)
%S   second (00..60)

[student@localhost ~]$ date +%H:%M:%S
08:09:29
[student@localhost ~]$ date +%H:%M:%S | tee time.txt
08:11:52
[student@localhost ~]$ cat time.txt 
08:11:52

这里写图片描述

2.显示 /etc/passwd 文件的第 16-18 行内容

[student@localhost ~]$ cat --help
Usage: cat [OPTION]... [FILE]...
 -b, --number-nonblank    number nonempty output lines, overrides -n
[student@localhost ~]$ cat -b /etc/passwd
[student@localhost ~]$ cat -b /etc/passwd | head -n 18 | tail -n 3
    16	avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
    17	avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
    18	rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin

这里写图片描述

3.显示 /bin 中文件包含大写字母的文件 , 保存到bin_westos_file.txt 文件中,并统计个数显示到屏幕

[student@localhost ~]$ ls /bin/*[[:upper:]]*
/bin/amuFormat.sh  /bin/Mail  /bin/X  /bin/Xorg  /bin/Xvnc
[student@localhost ~]$ ls /bin/*[[:upper:]]* | tee bin_westos_file.txt | wc -w
5

这里写图片描述

4.在 student 用户下查找 /etc 下 passwd 文件,屏蔽错误输出

## /dev/null是系统垃圾箱,我们可以将没用的东西放进其中。
[student@localhost ~]$ find /etc/ -name passwd 2> /dev/null
/etc/passwd
/etc/pam.d/passwd

这里写图片描述

5.在 student 用户下查找 /etc 下 passwd 文件,正确输出保存到 /tmp/westos.out错误输出保存到 /tmp/westos.err

##两个重定向中间无需添加任何连接字符
[student@localhost ~]$ find /etc/ -name passwd > /tmp/westos.out 2> /tmp/westos.err[student@localhost ~]$ cat /tmp/westos.out 
/etc/passwd
/etc/pam.d/passwd
[student@localhost ~]$ cat /tmp/westos.err 
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

这里写图片描述

6.在student用户下查找 /etc下passwd文件,显示命令输出并保存输出到/tmp/westos.all中

[student@localhost ~]$ find /etc/ -name passwd 2>&1 | tee /tmp/westos.all
[student@localhost ~]$ cat /tmp/westos.all 

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值