▲学习老王视频来的宝宝们,看这里(第5-6节)
1、总结vim命令行模式常见快捷方式,以及vim查找,替换的方法
(1)、vim命令行常见的快捷方式
:wq 保存退出Vim
:wq! 强制保存退出Vim
:q! 强制退出不保存,放弃保存修改的情况
:w filename 另存为filename
G :$ 移动到最后一行
gg :1 移动到第一行舅,同
100g 100G :100 移动到第100行
0 ^ 光标所在位置移动到当前行行首
$ 光标所在位置移动到当前行行尾
(2)、vim查找,替换的方法
输入 “/” 即可进入命令行的查找模式,注意的是向前查找的命令是“/” ,与之相对的向后查找的命令是 “ ?” 。然后输入你要查找的内容并回车;n继续向下查找、N继续向上查找。
可以使Vim忽略大小写的命令是在 set ignorcase
替换字符串
格式:s/要查找的内容/替换为的内容/修饰符
:[range]s/abc/ABC/[c,e,g,i]
这条命令就是把abc代表的字符串替换为ABC。开头的range是用来指定替换作用的范围的,如"1,5"表示从第一行到第5行,“1,$”表示从第1行到最后一行,也就是全文,全文也可以用 “%”来表示。最后方括号内的字符是可选选项,含义分别为 c 每次替换前询问; e 不显示错误信息; g 替换一行中的所有的匹配项; i 不区分大小写。
2、总结脚本中运算符、逻辑运算以及用法
bash中的算术运算:
『 + - * / : 加减乘除 』
『 % 求余 』
『 ** 乘方 』
『 ++ -- 自增自减 』
『 += -= 增强型赋值 』
算术运算有特定的写法来完成:
1. 使用let
n=1+2; echo $n 这样写,默认将1+2当成字符,并不会当成数字运算
let 1+2 使用let 1+2将被当成数字进行运算,但是结果不显示
let n=1+2;echo $n ---> 需要用一个变量保存起来,然后打印变量的值
2. 使用 $[] dollar符加中括号,算术运算写在中括号内
n=$[3*2] ; echo n
3. 使用 $(()) dollar符跟两个小括号,将执行的算术运算写在这两个括号内
n=$((3*5));echo $n
不要和 $(CMD) 搞混了, 这种写法是引用命令
4. 使用命令 expr
expr 3 * 4
-- expr是一个命令,后面跟着的都是参数 注意参数之间要以空格分隔的,不能写成 expr 3*4
expr 3 \* 4
-- 对于乘号还要转义
5. 声明为整数
declare -i n=3+6
echo "算术运算表达式" |bc
逻辑运算:
true ,false ---> 逻辑运算中的真的假 是对应于二进制 的1和 0
与运算 & : 和1做与运算,原来是什么就保留什么,和0做与运算,结果都为0
echo $[12&24] ---> 结果为8
或运算:| 两个数只要有一个是1,结果就是1,全部为0时,结果才为0
let $[12|24] ---> 结果为28
取反运算 ! : 逻辑运算符只有两种,要么真true,要么假false,如果是10进制的数字,只要不是0都认为是真
echo $[!100] --> 100系统认为是真,取反就变成了假, 结果输出为0
echo $[!1000] --> 1000也认为是真,取反也变成了假,结果输出为0
echo $[!0] --> 0认为是假,取反成了真,结果输出为1
true;echo $? --> 执行状态返回1
fasle;echo $? --> 执行状态返回0
异或运算: ^ 不同为1 , 相同为0
用异或实现两个变量的值互换: 比如有 A B 两个变量 A=10 B=20
第一步: A=${A^B} 把A与B异或后的结果赋值给A
第二步: B=${A^B} 把异或后的值与原来的B值异或, B就成了A
第三步: A=${A^B} 异或值与原来的A异或,又变成了B 这样A就变成了B
3、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到 /root/etcYYYY-mm-dd中
#!/bin/bash
#script:backup /etc/ < /root/etcYYYY-mm-dd
echo "backup begin to /etc/ ..."
sleep 5
cp -av /etc/ /data/etc-$(date "+%F")
echo "backup end..."
4、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统
nologin.sh
#!/bin/bash
[ ! -e '/etc/nologin' ] && touch /etc/nologin && echo "DenyLogin"
login.sh
#!/bin/bash
[ -e '/etc/nologin' ] && `rm -rf /etc/nologin` && echo "AllowLogin"
5、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值
#!/bin/bash
echo "df |grep /dev/sda|tr -s ' ' "%" |cut -d% -f5|sort -nr|head -1"