厚基础Linux——第五周作业

厚基础Linux——第五周作业

统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来

涉及知识点

正则表达式——位置匹配

位置匹配用于匹配字符存在于特定位置,在本题中需要匹配的/sbin/nologin应该满足两个条件,一是处于行尾,二是词首应该存在冒号。

# 位置匹配
/< #表示词首
/> #表示词尾
^  #表示行首
$	 #表示行尾
wc命令

wc命令可以计算文本行数,单词数,字节数

# wc常见用法
-l #表示行数
-w #表示单词数
-c #表示字节数
cut命令

cut命令可以按照指定分隔符提取字段,在本题中适合用于提取用户名

#cut常见用法
-d #指定分隔符
-f #指定截取字段,支持多个截取,用逗号分隔
grep命令

grep命令支持正则表达式,可以截取符合要求的文本

# grep常用选项
-v #反向匹配,截取不满足要求的
-o #只输出匹配到的内容,若同一行有多处满足,则输出多行。

代码段

#统计行数
grep -v ":/sbin/nologin$" /etc/passwd | wc -l
#输出用户名
grep -v ":/sbin/nologin$" /etc/passwd | cut -d: -f1

image-20201005093035531

查出用户UID最大值的用户名、UID及shell类型

涉及知识点

sort命令

sort命令用于排序,可以指定分隔符和字段序号,在本题中对uid进行数字排序。

#sort常见用法
-n #连续的数字文本在排序时当作数字
-r #按照降序排序
-t #指定分隔符,如不指定则默认选择空白
-k #指定排序字段序号
head命令

head用于向前截取文本,默认为截取10行,支持标准输入。

#head常见用法
-n #按行截取,指定截取数量
-c #按照字节截取

代码段

cat /etc/passwd | sort -t: -k3 -nr | head -n1 | cut -d: -f1,3,7

image-20201005094255694

统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序

涉及知识点

netstat命令

netstat 查看网络状态,使用tcp过滤可以获取当前连接的主机详细数据

netstat | grep tcp

在这里插入图片描述

grep命令

grep -o可以仅显示截取的ip地址

uniq命令

uniq用于连续重复文本场景,多次重复文本只会记录一次

#uniq命令常见用法
-c #记录文本重复次数
-u #只输出不重复的文本
-d #只输出重复的文本

代码段

netstat | grep tcp | grep -o "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}" | sort  | uniq -c | tr -s " " | sort -nr

在这里插入图片描述

编写脚本 createuser.sh,实现如下功能:使用一个用户名做为参数,如果 指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等 信息

涉及知识点

位置变量
$1 #脚本后的第一个参数

条件控制语句

CMD1 && CMD2 || CMD3 结构实现简单的条件控制

代码段

#!/bin/bash
# 
#***************************************************************************
#Author:                                Kel Zhou
#QQ:                                    248416319
#Date:                                  2020-10-05
#FileName:                              createuser.sh
#URL:                                   https://i.csdn.net/#/uc/profile
#Description:                           创建用户,如果存在就显示其存在,否则添加,显示添加的用户的id号等信#Copyright (C):                         2020 All rights reserved
#***************************************************************************
USERNAME=$1
id $USERNAME &> /dev/null && echo "$USERNAME exists" || (useradd $USERNAME; echo "$USERNAME is created, ID INFO:"; id $USERNAME)                                       

编写生成脚本基本格式的脚本,包括作者,联系方式,版本,时间,描述等

涉及知识点

.vimrc配置文件

该文件在用户家目录下,用于控制vim的环境。

autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
            if expand("%:e") == 'sh'
            call setline(1,"#!/bin/bash")
            call setline(2,"#")
            call setline(3,"#***************************************************************************")
            call setline(4,"#Author:                                Kel Zhou")
            call setline(5,"#QQ:                                    248416319")
            call setline(6,"#Date:                                  ".strftime("%Y-%m-%d"))
            call setline(7,"#FileName:                              ".expand("%"))
            call setline(8,"#URL:                                   https://i.csdn.net/#/uc/profile")
            call setline(9,"#Description:                           The test script")
            call setline(10,"#Copyright (C):                            ".strftime("%Y")." All rights reserved")
            call setline(11,"#***************************************************************************")
            call setline(12,"")
            endif
endfunc
autocmd BufNewFile * normal G

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值