关于shell的基础闲谈
来源:互联网 发布:js源码 编辑:程序博客网 时间:2024/06/18 04:33
一、在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
阅读全文
1 0
- 关于shell的基础闲谈
- 关于Unicode编码的闲谈
- 关于Unicode编码的闲谈
- 关于市面上智能手机的闲谈-1
- 关于shell变量的基础概念
- 基础软件国产化闲谈
- 关于VxWorks闲谈
- 【闲谈】关于23种设计模式的有趣见解
- [IOS]关于Obeject C中block(块)的闲谈
- 闲谈一维数组基础
- 关于网站建设De闲谈
- 闲谈https的安全性
- 周日的闲谈
- 【闲谈】我的大学
- 闲谈最近的生活
- 闲谈
- 闲谈
- 闲谈
- Go 语言如何实现error的优雅处理
- 牛腩学Kotlin做Android应用
- main函数参数argc,argv备忘
- 我的txt文件忽然变成乱码了,怎么办?
- EventBus 事件总线
- 关于shell的基础闲谈
- 【整理】MySQL引擎问题总结
- poll模型详解
- Python图像处理库PIL的ImageOps模块介绍 -----> 一些基本的图像操作
- 无网络状态下显示 缓存数据 <缓存到SD卡中>
- executeQuery、executeUpdate 和 execute的qubie
- HttpRequest中常见的四种ContentType
- Android:第一章整理
- HDU 1087 Super Jumping! Jumping! Jumping! ——LIS