第三周学习总结

内容总结

  这一周开始,我们学习的内容难度有所增加。周一我们学习的是文本处理工具和正则表达式。文本处理工具主要负责查看文本里的内容以及截取,排序,抽取文本里的关键信息。查看文本内容的口令主要有:cat more less,文本截取的口令有,head tail 按列抽取口令文cut,排序统计口令为sort wc 按关键字抽取为grep。其中最重要的就是文本处理三剑客之一的grep。grep为文本搜索工具,根据用户指定的模式对目标文本逐行匹配并且打印匹配到的行。然后学习了正则表达式。正则表达式分为基本正则表达式和拓展正则表达式。正则表达式在刚开始学的时候,我对于正则表达式的格式感到十分的不适应。不过经过了几天的练习,慢慢的掌握了正则表达式的输入方法。周三我们学习了这周最难得内,SHELL脚本编程。SHELL脚本的格式要求是首航shebang机制。它的用途有自动化常用命令,执行系统管理和故障排除,创建简单的应用程序,处理文本或文件。SHELL脚本最难的地方是,看得懂脚本但是真正开始写确感到没有思路。其实脚本里的内容基本都是我们之前学的口令组合到一起,没有不知道的口令,但是要求我们要把他们运用自如才能做到写出脚本。我们还学习了与或非的逻辑运算,这些对于我来说并没有什么太大的难度。第三天我们学习的文件查找和压缩,查找的口令有locate,特点是查找速度快,模糊查找。缺点是非实时查找。还有find,特点是实时查找工具,但它的查找速度略慢。在工作中我们用的口令更多是find。然后我们又学习了压缩,解压缩和归档工具。压缩和解压缩的工具非常多,又compress,gzip,bzip,xz,zip等等。归档工具是tar,既可以压缩也可以解压缩。 最后我们学习文本处理三剑客之一的sed,它一次处理一行的内容,处理的实收,把当前处理的行存储在临时的缓冲区中,所以sed的修改并不会改变源文件。

重点题目总结

文本处理工具的重点题目: 找出ifconfig “网卡名” 命令结果中本机的IPv4地址

[root@magedu ~]# ifconfig ens33 | grep netmask | tr -s " " ":"|cut -d: -f3

先用ifconfig命令显示所有IP信息,用管道将输出信息传到grep命令,用grep找到有netmask的行,之后将那一行的空格压缩并且用:代替,最后截取由:分割的第三个字段就是我们要的信息

如何查看file1文件的第300-500行的内容?

[root@magedu ~]# head -500 file1 | tail - 200

先查看file1文件,用head取出前500行,然后再在这500行中取后200行就是要求的行。

SHELL脚本基础的重点题目: 编写脚本/root/bin/systeminfo.sh,显⽰当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本, CPU型号,内存大小硬盘大小

[root@magedu ~]# vim sysinfo.sh
#!/bin/bash
ipv4=`ifconfig |egrep -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3])\>(\.\<([0-9]|
[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>){2}\.\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-
9]|25[0-5])\>"`
echo "当前主机系统信息如下:"
echo 主机名: `hostname`
echo ipv4地址:"$ipv4"
echo 操作系统版本: `cat /etc/redhat-release |cut -d. -f1-2`
echo 内核版本: `uname -r`
echo CPU型号: `lscpu |grep "Model name"|tail -1 |tr -s ' '|cut -d: -f2`
echo 内存大小: `free -mh |head -2|tail -1|tr -s ' '|cut -d' ' -f2`
echo 硬盘容量: `fdisk -l|head -2|tail -1|cut -d, -f1|cut -d' ' -f2-4`

编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满

[root@magedu ~]# vim /root/bin/checkdisk.sh
#!/bin/bash
disk=`df|egrep /dev/sd|tr -s ' ' '%'|cut -d% -f5|sort -nr|head -n1`
inode=`df -i|egrep /dev/sd|tr -s ' ' '%'|cut -d% -f5|sort -nr|head -n1`
[ $disk -ge 80 -o $inode -ge 80 ] && wall space will full.

成绩判断

[root@localhost data]# vim score.sh
#!/bin/bash
read -p "please input your score: " SCORE
if [[ ! $SCORE =~ ^[0-9]+$ ]]; then
echo "please input a digit!"
exit
elif [ $SCORE -lt 60 ];then
echo "no pass!"
elif [ $SCORE -lt 80 ];then
echo "so so!"
elif [ $SCORE -lt 100 ];then
echo "very good!"
else
echo "bug!"
fi

文件查找和压缩的重点题目 Linux系统中,删除/data/files目录下1周前修改过且大于10MB的文件?

 [root@Magedu ~]# find /data/files -type f -mtime +7 -size +10M -exec rm {} \;

先找到普通文件(type -f),-mtime为查找7天以上的文件,-size 找到符合条件大小的文件,执行删除命令。

SED文本处理的重点题目 删除/etc/fstab⽂件中所有以#开头,后面至少跟一个空白字符的行的行首为的# 和空白字符。

[root@magedu ~]# sed -r 's/^#[[:blank:]]+//'g /etc/fstab 用空白替代就是删除方式所以用sed -r ‘s@@@“。