一、 vim
一)Vim 命令模式下的命令
dd 删除(剪切)光标所在整行
5dd 删除(剪切)从光标处开始的5 行
yy 复制光标所在整行
5yy 复制从光标处开始的5 行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
二)Vim末行模式下的命令
:w 保存
:q 退出
:q! 强制退出(放弃对文档的修改内容)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令执行该命令
:整数跳转到该行
二、Shell脚本
一)相关知识点
语句1 && 语句2
如果语句1为真,则执行语句2
[root@linuxprobe ~]# [ -e /devX ] || echo "NO OK"
NO OK
[root@linuxprobe ~]# [ -e /dev ] && echo "OK" || echo "NO OK"
OK
[root@linuxprobe ~]# [ -e /devX ] && echo "OK" || echo "NO OK"
NO OK
# 如果内存小于1024,那么输出不足"buzo",否则输入很够"hg"
[` free -m | grep Mem: | awk '{print $4}'` -lt 1024 ] && echo "buzo" || echo "hg"
?
1. free -m
显示的当前内存的使用,-m的意思是M字节来显示内容
2. free -m | grep Mem:
通过grep Mem:命令过滤出剩余内存量的行,不显示上述结果的中其它行
3. free -m | grep Mem: | awk '{print $4}'
再用awk '{print $4}'命令保留输入结果第四列(或第4个字段),即835
4.用反括号取得上述执行结果
[root@linuxprobe ~]# echo `free -m | grep Mem: | awk '{print $4}'`
835
5. 用[]及-lt 与预设的标准500M作比较,当大于500时,输出“zhu gou”,不足时输入不够
[root@linuxprobe ~]# [ `free -m | grep Mem: | awk '{print $4}'` -lt 500 ] && echo "bu zhu" || echo "zhu gou"
zhu gou
[root@linuxprobe ~]# [ `free -m | grep Mem: | awk '{print $4}'` -lt 1500 ] && echo "bu zhu" || echo "zhu gou"
bu zhu
6. 数字比较时,使用 -eq -ne -lt -gt -le -ge 分别表示等于,不等于,小于,大于,小于等于,大于等于,不使用.> < 等符号的原因是系统不
7.字符串比较时用 = != -z 分别表示字符串相等,不相等,空串等
-z可以用来判断环境变量 是否被设置
1) Str是空串
[root@linuxprobe ~]# echo $Str
[root@linuxprobe ~]# [ -z $Str ]
[root@linuxprobe ~]# echo $?
0
2) Str不是空串
[root@linuxprobe ~]# Str=abc
[root@linuxprobe ~]# echo $Str
abc
[root@linuxprobe ~]# [ -z $Str ]
[root@linuxprobe ~]# echo $?
1
当然可以改进上述显示
[root@linuxprobe ~]# [ ! -z $Str ] && echo $Str || echo "NULL"
abc
9.ping命令
语法格式:ping [参数] [目标主机]
练习1:
[root@linuxprobe ~]# ping 192.168.180.1
PING 192.168.180.1 (192.168.180.1) 56(84) bytes of data.
64 bytes from 192.168.180.1: icmp_seq=1 ttl=128 time=0.253 ms
64 bytes from 192.168.180.1: icmp_seq=2 ttl=128 time=0.503 ms
……
常用参数:
-c count | ping指定次数后停止ping; |
-i interval | 设定间隔几秒发送一个ping包,默认一秒ping一次; |
-W timeout | 以毫秒为单位设置ping的超时时间; |
练习2:
[root@linuxprobe ~]# ping -c 3 192.168.180.1
PING 192.168.180.1 (192.168.180.1) 56(84) bytes of data.
64 bytes from 192.168.180.1: icmp_seq=1 ttl=128 time=0.331 ms
64 bytes from 192.168.180.1: icmp_seq=2 ttl=128 time=0.615 ms
64 bytes from 192.168.180.1: icmp_seq=3 ttl=128 time=0.424 ms
--- 192.168.180.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.331/0.456/0.615/0.120 ms
练习3:
#次数为3次,每次间隔5秒
[root@linuxprobe ~]# ping -c 3 -i 5 192.168.180.1
练习4: ping 次数为4次,每次间隔5秒 18秒超时(因有18秒的时长限制及每次间隔5秒的条件,所以次数执行3次就结束了。
[root@linuxprobe ~]# ping -c 3 -i 5 -W 18 192.168.180.1
PING 192.168.180.1 (192.168.180.1) 56(84) bytes of data.
64 bytes from 192.168.180.1: icmp_seq=1 ttl=128 time=0.517 ms
64 bytes from 192.168.180.1: icmp_seq=2 ttl=128 time=0.686 ms
64 bytes from 192.168.180.1: icmp_seq=3 ttl=128 time=0.533 ms
--- 192.168.180.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 10001ms
rtt min/avg/max/mdev = 0.517/0.578/0.686/0.081 ms
练习5: 不知道ping的结果显示的屏幕上,可以将结果重定向至linux的黑洞文件
/dev/null:
表示 的是一个黑洞,通常用于丢弃不需要的数据输出, 或者用于输入流的空文件
ping -c 3 -i 5 -W 18 192.168.180.1 &> /dev/null
二)几个脚本练习
一) 第一个小练习
[root@linuxprobe ~]# vim haha.sh
#!/bin/bash
#shell脚本的名称
echo "$0"
#参数的数量和,具体参数
echo "$#,$*"
#输出1,3,5个参数
echo "$1,$3,$5"
[root@linuxprobe ~]# bash haha.sh a b c d e f
haha.sh
6,a b c d e f
a,c,e
二) 第二个小练习
根据分数请等级,90分以上A,70-89为B,60-69为C,小于60为D
vim examIf.sh
三)第三个小练习
相关知识点:
1.read命令
从标准输入读取单行数据。
[root@linuxprobe ~]# read website baidu.com [root@linuxprobe ~]# echo $website baidu.com
|
2.expr
全称是“expression”,即是表达式的意思,作用是一个命令行的计数器
例如后面可接length(计算长度),substr (取子串),index(查子串位置)
[root@linuxprobe ~]# expr length 'abcd' 4 [root@linuxprobe ~]# expr substr 'abcd' 2 1 b [root@linuxprobe ~]# expr substr 'abcd' 2 3 bcd [root@linuxprobe ~]# expr index 'abcd' 'bc' 2 |
3 $RANDOM
echo $RANDOM时,就会主动的随机取出一个介于0~32767之间的随机数值
如果想取出0~100之间随机数,可使用如下脚本:
declare -i number=$RANDOM*100/32767; echo $number
shell脚本如下:
[root@linuxprobe ~]# vim rand100.sh
#!/bin/bash # get 0-100 random declare -i number=$RANDOM*100/32767; echo $number
[root@linuxprobe ~]# bash rand100.sh 46 [root@linuxprobe ~]# bash rand100.sh 97 |
while循环测试练习
#!/bin/bash
#test
TIMES=0
#INT=10
read -p "game over times is:" INT
while true
do
let TIMES++
echo "TIMES=$TIMES"
#echo "INT=$INT"
if [ $INT -eq $TIMES ]
then
echo "GAME OVER"
exit 0
fi
done
5.猜数字游戏
[root@linuxprobe ~]# vim guess.sh
#!/bin/bash
#test
PRICE=$(expr $RANDOM % 1000)
TIMES=0
while true
do
read -p " 输入一个数: " INT
let TIMES++
if [ $INT -eq $PRICE ]
then
echo "你猜测试了$TIMES次,猜对了!游戏结束"
exit 0
elif [ $INT -gt $PRICE ]
then
echo "你猜测试了$TIMES次,太大了"
else
echo "你猜测试了$TIMES次,太小了"
fi
done