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服务程序,其格式为“分 时 日 月 星期 命令”。

浙公网安备 33010602011771号