linux(redhat7)学习笔记(04)Vim与Shell脚本

一、 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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值