1、统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来
[22:39:34 root@centos8 ~]#egrep "/sbin/nologin$" /etc/passwd |wc -l
20
[22:40:04 root@centos8 ~]#egrep "/sbin/nologin$" /etc/passwd | cat -n
1 bin:x:1:1:bin:/bin:/sbin/nologin
2 daemon:x:2:2:daemon:/sbin:/sbin/nologin
3 adm:x:3:4:adm:/var/adm:/sbin/nologin
4 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
5 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
6 operator:x:11:0:operator:/root:/sbin/nologin
7 games:x:12:100:games:/usr/games:/sbin/nologin
8 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
9 nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
10 dbus:x:81:81:System message bus:/:/sbin/nologin
11 systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
12 systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
13 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
14 polkitd:x:998:996:Userforpolkitd:/:/sbin/nologin
15 unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin
16 sssd:x:996:993:Userforsssd:/:/sbin/nologin
17 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
18 saslauth:x:995:76:Saslauthd user:/run/saslauthd:/sbin/nologin
19 tcpdump:x:72:72::/:/sbin/nologin
20 slackware:x:2002:2019::/home/slackware:/sbin/nologin
2、查出用户UID最大值的用户名、UID及shell类型
sort命令选项:
-n:依照数值得大小排序
-r:以相反的顺序进行排序
-t:指定分割符
-K:指定列数
[01:24:22 root@centos8 ~]#cat /etc/passwd | cut -d: -f1,3,7 | sort -t: -k 2 -nr
nobody:65534:/sbin/nologin
user3:2005:/bin/bash
user2:2004:/bin/bash
user1:2003:/bin/bash
slackware:2002:/sbin/nologin
mageia:1100:/bin/bash
zf:1000:/bin/bash
systemd-coredump:999:/sbin/nologin
polkitd:998:/sbin/nologin
unbound:997:/sbin/nologin
sssd:996:/sbin/nologin
saslauth:995:/sbin/nologin
systemd-resolve:193:/sbin/nologin
dbus:81:/sbin/nologin
sshd:74:/sbin/nologin
tcpdump:72:/sbin/nologin
tss:59:/sbin/nologin
ftp:14:/sbin/nologin
games:12:/sbin/nologin
operator:11:/sbin/nologin
mail:8:/sbin/nologin
halt:7:/sbin/halt
shutdown:6:/sbin/shutdown
sync:5:/bin/sync
lp:4:/sbin/nologin
adm:3:/sbin/nologin
daemon:2:/sbin/nologin
bin:1:/sbin/nologin
root:0:/bin/bash
[01:24:31 root@centos8 ~]#cat /etc/passwd | cut -d: -f1,3,7 | sort -t: -k 2 -nr | head -1
nobody:65534:/sbin/nologin
[01:30:55 root@centos8 ~]#sort -t: -k 3 -nr /etc/passwd | cut -d : -f1,3,7 | head -1
nobody:65534:/sbin/nologin
3、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
[22:09:58 root@centos8 scripts]#w | egrep "^root" | tr -s ' ' | cut -d ' ' -f 3 | uniq -c | sort -nr
2 192.168.10.3
11 92.168.10.22
4、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值
[22:22:35 root@centos8 scripts]#df -h | tr -s ' ' % | tr -d '[a-z|A-Z]'|cut -d % -f 5 | sort -nr
15
11
2
0
0
0
0
5、编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
[01:26:23 root@node scripts]#cat systeminfo.sh
#!/bin/bash
echo "-------------------system info--------------------------"
echo "当前主机名是: `hostname`"
echo "当前的主机IP地址是: `ifconfig | grep inet | egrep -o '[0-9]{1,3}(\.[0-9]+){1,3}[0-9]{1,3}' | head -1`"
echo "当前的操作系统版本是: `cat /etc/redhat-release`"
echo "当前的内核版本是: `uname -r`"
echo "当前的cpu型号是: `lscpu | grep Model | cut -d: -f2 | tail -1 | tr -s ' '`"
echo "当前的系统的总内存是: `free -h | grep Mem | tr -s ' ' : | cut -d: -f2`"
echo "当前的硬盘的大小是: `lsblk | grep disk | tr -s ' ' : | cut -d: -f5 `"
echo "--------------------------------------------------------"
6、20分钟内通关vimtutor(可参考https://yyqing.me/post/2017/2017-02-22-vimtutor-chinese-summary)
vim 文本编辑工具
官方网站:www.vim.org
帮助手册:vimtutor
vim基础用法:
命令格式:
vim[options] [file ..]
常用选项
+#:打开文件让光标处于第#行,+默认文件的行尾
+/pattern:让光标处于第一个被pattern匹配到的行首
-bfile:二进制的方式打开文件
-dfile1 file2:比较多个文件,相当于vimdiff
-mfile:只读方式打开文件
-efile:直接进入ex模式,相当于执行ex file
备注说明:
文件存在,文件被打开并显示文件内容
文件不存在,当编辑第一次文件存盘时会创建它
vim的三种模式及模式的转换:
三种常见的模式:
命令模式:默认文件打开就是命令模式,可以实现光标的移动,剪切或粘贴文本
插入模式:可以修改文件的内容
末行模式:可以保存退出或进行文本的替换,查寻等功能
三种模式的转换方法:
命令模式 --> 插入模式
i:在光标所在处输入内容
I:在光标所在行的行首输入
a:在光标所在的后面输入
A:在光标所在行的行尾输入
o:在光标所在行的下方打开一个新行进行输入
O:在光标所在行的上方打开一个新行进行输入
插入模式-->esc-->命令模式--:--> 末行模式(wq(保存退出文档))
末行模式常用用法:
基本命令的使用:
w:写(存)磁盘文件
wq:写入并退出
x:写入并退出
X: 将编辑的文件进行加密
q:退出
q!:不存盘退出,即使更改的数据都将丢失
r file: 将文件的内容读取到当前文件中
w file:将当前文件的内容写入到另一个文件
!command:执行命令行命令
r!command:读入命令的输入到当前文件
地址定界的命令使用:
命令格式:
:start_pos,end_pos CMD
地址定界语法格式:
#:具体的第#行
#,#:表示第几行到第几行
#,+#:表示的当前行到后面的第几行,例如2,+3:代表第2行到第5行
.:代表当前行
$:代表最后一行
.,$-1:当前行到倒数第二行
%:显示文件全文
/pattern/:从当前行向下查找,直到匹配到pattern的第一行
/pat1/,/pat2/:从第一次被pat1模式匹配到行的开始,一直到第一次被pat2匹配到的行结束
#,/pattern/:从指定行开始,一直找到匹配到pattern的行
/pat/,$:向下找到第一个匹配到pattern的行到整个文件的结尾的所有行。
地址定界后跟一个编辑命令
d:删除
y:复制
w file:将范围内的行另存至指定的文件中
r file:在指定的位置插入指定文件中的所有内容
查找和替换的命令使用:
命令格式:
s/要查找的内容/替换为的内容/修饰符
备注:
要查找的内容可以使用基本的正则表达式
替换为的内容,不能使用模式,但可以使用\1,\2等后向引用的符号。
查找替代中的分割符/可以使用其他的字符替换,如#,@
修饰符:
i:忽略大小写
g:全局替换,默认情况下,每行只替换第一次出现
gc:全局替换,每次替换前询问