第三周作业
1、总结vim命令行模式常见快捷方式,以及vim查找,替换的方法
( 1 ) 普通模式下的快捷键
快捷键 说明
h 左移一个字符
j 下移一行(文本中的下一行)
k 上移一行(文本中的上一行)
l 右移一个字符
Control + F 下翻一屏
Control + B 上翻一屏
G 移动到缓冲区的最后一行
num + G 移动到缓冲区中的第num行
gg 移动到缓冲区的第一行
:q 如果未修改缓冲区数据,退出
:q! 取消所有对缓冲区数据的修改并退出
:w filename 将文件保存到另一个文件中
:wq 将缓冲区数据保存到文件中并退出
( 2 ) vim编辑命令
快捷键 说明
x 删除当前光标所在位置的字符
dd 删除当前光标所在行
dw 删除当前光标所在位置的单词
d$ 删除当前光标所在位置至行尾的内容
J 删除当前光标所在行行尾的换行符(拼接行)
u 撤销前一编辑命令
a 在当前光标后追加数据
A 在当前光标所在行行尾追加数据
r char 用char替换当前光标所在位置的单个字符
R text 用text覆盖当前光标所在位置的数据,直到按下Esc键
查找
同less的查找用法
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
3.查找并替换
s:在末行模式下完成查找替换操作
s / 要查找的内容 / 替换为的内容 / 修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
修饰符:
i:查找时忽略大小写
g:全局替换;默认情况下,每一行只替换第一次出现
e.g. 1,$s/r\(..\)t/R\1T/g
e.g. 1,$s/linux/&er/g
e.g. 1,$s/ \ /etc\ /fstab / \ /var \ /log 地址中的/需要转义
P.S. 要给出地址定界
查找替换中的分隔符/可替换为其它字符,例如
s@ 要查找的内容 @ 替换为的内容 @ 修饰符
s# 要查找的内容 # 替换为的内容 # 修饰符
2、总结脚本中运算符、逻辑运算以及用法
1. 条件运算符
运算符号 | 代表意义 | 应用 | 说明 |
= | 等于 | 整型或字符串比较: str1 = str2 | 字符串str1 和字符串str2 相等时返回真,如果在[]中,只能是字符串 |
== | 等于 | 整型或字符串比较: str1 == str2 | 字符串str1 和字符串str2 相等时返回真,如果在[]中,只能是字符串 |
!= | 不等于 | 整型或字符串比较: str1 != str2 | 字符串str1和字符串str2不相等时返回真,如果在[]中,只能是字符串 |
< | 小于 | 整型或字符串比较: str1 < str2 | 按字典顺序排序,字符串str1 在字符串str2 之前,在[]中,它表示字符串,如需使用请转义\< |
> | 大于 | 整型和字符串比较 | 在[]中,它表示字符串,如需使用请转义\> |
-eq | 等于 | 整型比较: int1 -eq int2 | 如果int1 等于int2,则返回真 |
-ne | 不等于 | 整型比较: int1 -ne int2 | 如果int1 不等于int2,则返回真 |
-lt | 小于 | 整型比较: int1 -lt int2 | 如果int1 小于int2,则返回真 |
-gt | 大于 | 整型比较: int1 -gt int2 | 如果int1 大于int2,则返回真 |
-z | 空字符串 | 字符串比较: -z string | 字符串string 为空串(长度为0)时返回真 |
-n | 非空字符串 | 字符串比较 :-n string | 字符串string 为非空串时返回真 |
-le | 小于或等于 | 整型比较: int1 -le int2 | 如果int1 小于等于int2,则返回真 |
-ge | 大于或等于 | 整型比较: int1 -ge int2 | 如果int1 大于等于int2,则返回真 |
2. 逻辑运算符
运算符号 | 代表意义 | 应用 | 说明 |
-a | 双方都成立(and) | 逻辑表达式 –a 逻辑表达式 | 在[] 表达式中使用 |
-o | 单方成立(or) | 逻辑表达式 –o 逻辑表达式 | 在[] 表达式中使用 |
! | 逻辑否,条件为假,结果为真。 | ||
&& | 双方都成立(and) | 逻辑表达式 && 逻辑表达式 | 在[[]] 表达式中使用 |
\ \ | 单方成立(or) |
3、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中
#!/bin/bash
cp -r /etc/ /root/etc"$(date +%F)"
4、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统
#!/bin/bash
read -p "请输入允许登录的用户:" user
uid=$( id $user |tr " " @ |cut -d@ -f1 |grep -o "[0-9]\{3,\}" )
[ $uid -ge 500 ] && usermod -s /bin/bash $user || echo '该用户为系统用户'
echo '该用户已允许登陆'
5、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值
#!/bin/bash
max=$(df |tr -s " " ":"|cut -d ":" -f5|egrep -o "[[:digit:]]*"|sort -nr|head -n1)
echo "当前硬盘分区中空间利用率最大的值为: $max"