6月2日
基础
1· 表达式计算
-
方式1: "$((3 * 8))"
-
方式2: "$[3 * 8]"
2· 时间date
date :显示当下时间
date +%Y :显示年
date +%m :显示月
date +%d :显示日
date +%H :显示时
date +%M :显示分
date +%M :显示秒
date “+%Y-%m-%d %H:%M:%S”
cal 查看日历
3· 文件查找
find:
find [查找范围] [选项]
选项:
-name<查询方式> 按照指定的文件名查找模式查找文件
-user<用户名> 查找属于指定用户名所有文件
例如 : find ./ -name a.txt
locate:
locate 文件名
grep 和 |
grep 选项 查找内容 源文件
选项:
-n 显示匹配行及行号
which :
例如 which java
4· 压缩和解压
gzip 和 gunzip
特点:
(1)只能压缩文件不能压缩目录
(2)不保留原来的文件
(3)同时多个文件会产生多个压缩包
zip 和 unzip
zip
-r 压缩目录
unzip
-d<目录> 指定解压后文件的存放目录
tar
-zxvf
-C :指定解压到哪个文件夹
5· 脚本中常用
test 条件判断
特别地:条件为假返回 1,条件为真返回 0
条件语句:
if [ $1 -eq 1 ];then
echo "cc.txt 文件存在"
elif [ $1 -eq 2 ];then
echo "为什么要输入no"
else
echo "我下班了"
fi
疑问: 如何判断字符串相等? if [ "$1"x = "yes"x ]
6月6日
进阶
1· case语句,类似java中的switch语句
case "${item}" in
1)
echo "item = 1"
;;
2|3)
echo "item = 2 or item = 3"
;;
*)
echo "default (none of above)"
;;
esac
2· for 语句
方式1 :
for((i=0;i<"$1";i++));do
echo $i
done
方式2:
for i in {a..z} ; do
echo $i
done
3· while语句
while [ $i -le $1 ];do
echo $i
i=$[$i+1]
done;
4· 从控制台接收输入
read -t 10 -p "10秒内输入自己的名字:" name
5· 常见的系统函数
basename : basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来
dirname :从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)
6· 自定义函数
-
有参情况
function add() { echo "$(($1+$2)))" } read -t 5 -p "亲输入第一个参数:" first read -t 5 -p "亲输入第二个参数:" second add $first $second -
关于函数的返回值
返回 return 一般用于返回执行状态布尔值,有中断函数执行的作用 -
外部调用函数
首先要用 . 命令source一下 : . func.sh 再调用函数 : add
7· 数组
1) Shell 数组用括号来表示,元素用"空格"符号分割开
2) 在shell语句中,使用、遍历数组的时候,数组格式要写成 {arr[@]} 或arr[@]或{arr[*]}
3) 数据类型可以是混合类型
4)获取数组的长度
${#数组名[@]} 或者 ${#数组名[*]}
8· linux中的三剑客
正则表达式(略)
-
grep : 对文本数据进行处理
-
sed : 对文本数据进行处理
-n:取消默认输出
-i:直接将修改内容写入文件
-e:多次编辑
-r: 支持正则扩展
-
awk : 将文本内容进行格式化
6月7日
定时任务
-
查看 crond : systemctl status crond
-
at 定时任务工具,适用于执行一次就结束的定时任务
3· crontab
-
/etc/crontab是一个文件,root可以通过这个文件来维护系统级的调度任务。 -
一般情况下,不建议将所有的全局性的调度任务都维护在
/etc/crontab这一个文件中,那样会很混乱,因此有了/etc/cron.d/