Linux就该这么学-学习笔记(四)

0x01 Vim文本编辑器

命令模式下可用的命令

dd:删除(剪切)光标所在整行

5dd:删除(剪切)从光标处开始的5行

yy:复制光标所在整行

5yy:复制从光标处开始的5行

n:显示搜索命令定位到的下一个字符串

N:显示搜索命令定位到的上一个字符串

u:撤销上一步的操作

p:将之前删除(dd)或复制(yy)过的数据粘贴到光标后面

末行模式下可用的命令

:w 保存

:q 退出

:q! 强制退出

:wq! 强制保存退出

:set nu 显示行号

:set nonu 不显示行号

:命令 执行该命令

:整数 跳转到该行

:s/one/two 将当前光标所在行的第一个one替换成two

:s/one/two/g 将当前光标所在行的所有one替换成two

:%s/one/two/g 将全文中的所有one替换成two

?字符串 在文本中从下至上搜索该字符串

/字符串 在文本中从上至下搜索该字符串

0x02 编写Shell脚本

接收用户的参数

$0对应的是当前Shell脚本程序的名称

$#对应的是总共有几个参数

$*对应的是所有位置的参数值

$?对应的是显示上一次命令的执行返回值

$N对应的是第N个位置的参数值

判断用户的参数

文件测试(使用指定条件来判断文件是否存在或权限是否满足等情况的运算符):

-d:测试文件是否为目录类型

-e:测试文件是否存在

-f:判断是否为一般文件

-r:测试当前用户是否有权限读取

-w:测试当前用户是否有权限写入

-x:测试当前用户是否有权限执行

 

逻辑测试(对测试结果进行逻辑分析):

就是&&(与)、||(或)、!(非)的使用。

 

整数比较运算符:

-eq:是否等于

-ne:是否不等于

-gt:是否大于

-lt:是否小于

-le:是否等于或小于

-ge:是否大于或等于

获取内存可用量的命令:

FreeMem=`free -m | grep Mem: | awk '{print $4}'`
echo $FreeMem

 

常见的字符串比较运算符:

=:比较字符串内容是否相同

!=:比较字符串内容是否不同

-z:判断字符串内容是否为空

 

补:$LANG:用于保存当前语系的环境变量值。

0x03 流程控制语句

if条件测试

#!/bin/bash
read -p "Enter your score(0-100):" SCORE
if [ $SCORE -ge 85 ] && [ $SCORE -le 100 ];then
echo "$SCORE is Excellent"
elif [ $SCORE -ge 70 ] && [ $SCORE -le 84 ];then
echo "$SCORE is Pass"
elif [ $SCORE -ge 0 ] && [ $SCORE -le 69 ];then
echo "$SCORE is Fail"
else
echo "Error"
fi

read是用来读取用户输入信息的命令,并把接收到的用户输入信息赋值给后面的指定变量SCORE。

-p参数用于向用户显示一定的提示信息。

for条件循环语句

格式为:

for 变量名 in 取值列表
do
命令序列
done

注:$(命令)类似于前面的反引号(``)一样,会执行括号里面的命令。

while条件循环语句

格式为:

while 条件测试操作
do
命令序列
done

例子:

#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商店实际价格为0-999之间,猜猜看是多少?"
while true
do
read -p "请输入您猜测的价格数目:" INT
let TIMES++
if [ $INT -eq $PRICE ];then
echo "恭喜您答对了,实际价格是 $PRICE"
echo "您总共猜测了 $TIMES 次"
exit 0
elif [ $INT -gt $PRICE ];then
echo "太高了!"
else
echo "太低了!"
fi
done

case条件测试语句

格式为:

case 变量值 in
模式1)
    命令序列
    ;;
模式2)
    命令序列
    ;;
......
*)
    默认命令序列
esac

例子:

#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
[a-z]|[A-Z])
echo "您输入的是 字母"
;;
[0-9])
echo "您输入的是 数字"
;;
*)
echo "您输入的是 空格、功能键或其他控制字符"
esac

 0x04 计划任务服务程序

计划任务分为一次性计划任务与长期性计划任务。

一次性计划任务只执行一次,一般满足临时的工作需求。使用“at 时间”就可以了。

at -l:查看已设置好但还未执行的一次性计划任务。

atrm 任务序号:删除对应序号的一次性计划任务。

注:使用at命令来设置一次性计划任务时,默认采用的是交互式方法。

 

在Linux系统中默认启用的crond服务就可以用来设置长期性的计划任务。

编辑计划任务的命令为“crontab -e”

查看当前计划任务的命令为“crontab -l”

删除某条计划任务的命令为“crontab -r”

注:若是以管理员的身份登录的话,可以在crontab命令中加上-u参数来编辑他人的计划任务。crond服务设置任务的参数格式为“分 时 日 月 星期 命令”,没有对某些参数进行设置的话,使用星号(*)来占位,另外就是在crond服务的任务参数中,所有的命令都要用绝对路径的方式来写。(不知道绝对路径的话,可以使用“whereis 命令”来进行查找)计划任务中的“分”字段必须要有数值,不能为空或*号,而“日”和“星期”字段不能同时使用。

 

需要了解的问题:

1.vim编辑器的三种模式分别是什么?

答:命令模式、末行模式与输入模式。

2.怎么从输入模式切换到末行模式?

答:先敲击Esc退回到命令模式,再敲击冒号(:)键进入末行模式

3.一个完整的Shell脚本应该哪些内容?

答:应该包括脚本声明、注释信息和可执行语句。

4.分别解释Shell脚本中$0和$3变量的作用。

答:$0代表脚本文件的名称,$3代表该脚本在执行时接收的第三个参数。

5.if条件测试语句有几种结构,最灵活且最复杂的是哪种结构?

答:有3种结构,分别是单分支、双分支和多分支。其中最灵活且最复杂的结构是多分支,结构形式为if...then...elif...then...else...fi。

6.for条件循环语句的循环结构是什么?

答:for 变量名 in 取值列表 do 命令序列 done。

7.若在while条件循环语句中使用true作为循环条件,会发生什么?

答:无休止循环,直到遇到exit命令从才会结束。

8.如果需要依据用户的输入参数执行不同的操作,最方便的条件测试语句是什么?

答:case条件语句。

9.Linux系统的长期计划任务所使用的服务是什么,其参数格式是什么?

答:长期计划任务需要使用crond服务程序,其格式为“分 时 日 月 星期 命令”。

posted @ 2020-02-01 15:34  Paddling  阅读(227)  评论(0)    收藏  举报