一、在shell中,各个括号的作用:
1、一对小括号()
在shell 中,使用一对小括号时,shell执行到这里会新开一个子shell去执行,再将执行结果返回当前终端;
2、使用两对小括号(())
该种情况一般都是在进行整形运算是用到,如SUM=$(($NUM1+$NUM2))
并且括号里的$符号可以省略,即为:SUM=$((NUM1+NUM2));
二、一般适用于各种循环语句的情况
1、case语句
case ... in
...)
echo ...
;;
击键类型识别
遍写服务启停控制脚本
2、for循环语句
for ... in ...
do
...
done
打印99乘法表
小贴士:
for i in {1..9};do
下面会自动遍历从1到9,无需i++
i=1
若是while [ $i -ge a $i -le ];do []内为条件测试,不会实现遍历;
......
则下面手动写上:i++
3、if循环语句
if ...
then ...
elif ...
then ...
elif ...
then...
else
....
fi
检测在网段主机之间存活的主机
4、while 循环语句
重复测试某个条件,当条件成立反复执行
while ...
do
...
done
批量添加用户
三、sed的各种简单应用
[root@dog ~]# sed -n 'p;n' test.txt #隔一行打印一行
gd
good
gold
gaad
food
hello
1326010452
6608204540
1、;在sed中代表用;隔开命令
比如:
[root@dog ~]# sed -n '1p;3p' test.txt
gd
good
执行打印1行和3行的指令,指令之间用;隔开。
[root@dog ~]# sed -n '1,3p' test.txt
gd
god
good
执行打印1-3行指令,因为有范围,所以用逗号,范围内都执行同一个指令,所以直接接上p,否则若在一定的范围内执行两个指令,要在指令上加{}
例如:
[root@dog ~]# sed -n '1,5{p;n}' test.txt
gd
good
gold
打印出1到5行所有的奇数行;
输出最后一行:
[root@dog ~]# sed -n '$p' test.txt
010-66668888
删除空行
[root@dog ~]# sed -i '/^$/d' test.txt #删除空行,匹配以结尾开头的行,^$
将以IP开头的行前加上#
[root@dog ~]# sed '/^IP/ s/^/#/' test.txt
在每行行尾加上EOF
[root@dog ~]# sed 's/$/EOF/' test.txt
替换第二行整行
c整行替换
[root@dog ~]# sed '2cAAAAAAAAA' test.txt
读取指定文件到行后:
r读取文件到行后
[root@dog ~]# sed '5r /etc/resolv.conf' test.txt
a,追加指定内容到行后
[root@dog ~]# sed '5r /etc/resolv.conf' test.txt
i将指定内容追加到行前
w另存为
H复制
G将剪贴板的内容复制到某行下
四、awk命令简单应用
[root@dog ~]# awk -F:'$2==""{print}' /etc/shadow #输出密码为空的用户
统计当前所有系统用户的用户名、UID、GID、登录的shell制成windows系统中的表格,工作中常用到:
[root@dog ~]# awk -F:'{print $1","$3","}' /etc/passwd >users.csv
当前内存使用率超过85%时报警(取整数部分)
[root@dog ~]# free -m
total used free shared buffers cached
Mem: 988 326 662 0 45 118
-/+ buffers/cache: 161 826
Swap: 1983 0 1983
[root@dog ~]# [ $(free -m |awk '/cache:/{print int($3/($3+$4)*100)}') -ge 85 ] && echo "报警!"
过滤出当前shell最近使用对多的前十个命令:
[root@dog ~]# history |awk '{print $2}' |sort |uniq -c |sort -nr |awk 'NR==1,NR==10{print}'
33 sed
20 vim
18 sh
16 awk
8 cat
6 history
5 ls
4 rm
4 ip
4 chmod
sort:对命令以名称形式进行排序
uniq -c:在每行前加上表示响应行目出现目标的次数
sort -nr:以数字值的大小为排序依据;反向排序
小贴士:
查看分区磁盘占用率:df -hT
[root@dog ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_dog-lv_root
ext4 18G 3.5G 13G 22% /
tmpfs tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 ext4 477M 37M 416M 9% /boot
[root@dog ~]# df -hT |awk '/\/$/{print $(NF-1)}'
22%
查看CPU使用率:mpstat
[root@dog ~]# mpstat
Linux 2.6.32-573.el6.x86_64 (dog) 2017年05月21日 _x86_64_ (1 CPU)
13时26分12秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
13时26分12秒 all 0.03 0.00 0.19 0.45 0.00 0.11 0.00 0.00 99.21
[root@dog ~]# mpstat |awk '/all/{print (100-$NF)}'
内存使用率:free -m
[root@dog ~]# free -m
total used free shared buffers cached
Mem: 988 329 659 0 46 118
-/+ buffers/cache: 163 824
Swap: 1983 0 1983
[root@dog ~]# free -m |awk '/cache:/{print int($3/($3+$4)*100)}'
16