目录
一 、Linux的变量
1.1环境变量:用于整个系统运行时所使用的变量库
全局环境变量
/etc/profile:用于管理所有用户的环境变量
用户环境变量
~/.bash_profile:用于管理每个用户自己的环境变量
1.2 位置变量
$1-$9:表示脚本文件的第一个到第九个参数
1.3 编写脚本规范
脚本开头:#!/bin/bash
所有变量的引用:${name}
执行脚本
给脚本添加执行权限
chmod u+x file_name.sh
执行脚本
./filename.sh
1.4 预定义变量
$?:表示上一个命令执行的结果
0:表示上一条正确执行了
非0:表示上一条命令执行失败
$*:表示所有参数,整体
$@:表示所有参数,分割
$#:表示参数的个数
合法性判断
1.5 自定义变量
格式:key=value
没有数据类型
不允许有空格
String name = "hehe"
测试:
a=1
b=myname
b="my name is"
命名规则:与java类似,系统变量一般全部大写,一定的可读性
1.6 通配符与正则表达式
通配符:
*:用于匹配多个字符
?: 匹配单个字符
find ls cp
正则表达式:
.:表示匹配单个任意字符
*:表示匹配多个
.*
[0-9]:表示0-9之间任意一个数字
[0-9]*
[a-z]
[A-Z]
^:表示以什么开头
$:表示以什么结尾
\:表示转义
grep:用于过滤文本
grep 'root' /etc/passwd
查找用户id与组id都只有个位数的用户记录
grep ':[0-9]:[0-9]:' /etc/passwd
-v:反选
sed:主要用户对行的处理
sed 's/nologin/88888/g' passwd
ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | sed 's/inet addr://g' | sed 's/Bcast.*//g' | sed 's/ //g'
awk:主要用户对列的处理
awk -F ':' '/root/{print $1}' passwd
1.7 逻辑连接符
&&:表示并列,当第一条命令执行成功,第二条命令才会执行
||:表示或者,当第一条命令执行失败,第二条命令才会执行
;:表示没有关系
1.8 内置判断测试
数字判断:a=1,b=2
[]
[ $A -判断符号 $b ]
eq:相等
ne:不相等
lt:小于
le:小于等于
gt:大于
ge:大于等于
(())
(($a>$b))
>=,<=.<,>,==,!=
字符判断:[]
=,!=,\<,\>
-z :判断是否为空,如果为空返回true,如果不为空返回false
-n:判断是否不为空
文件判断:
-e:判断是否存在
-f:表示是否是一个文件
-d:表示是否是文件夹
-r,-w,-x:表示是否有对应的权限
表达式的连接符
-a: [ 条件1 -a 条件2 ]
-o
1.9 数值的计算
$[$a+$b] $[a+b]
$(($a+$b))
a = 1
b = 2
expr a+b
#a+b
expr $a+$b
#1+2
expr $a + $b
#3
1.10 date:用于设置和查看当前时间的命令
date
date -s "yyyy-MM-dd HH:mm:ss"
date -s "2018-01-01 00:00:00"
date +"%Y-%m-%d"
前一天的日期
date -d '1 days ago' +"%Y-%m-%d"
date -d '-1 day' +"%Y-%m-%d"
二、Linux的shell脚本
2.1 什么是shell脚本
可执行的文件.sh结尾
文件内容:
必须以#!/bin/bash开头
内容:shell语法,Linux命令
大数据脚本中:命令的封装
创建一个文件
移动一个文件
编辑一个文件
删除一个文件
执行方式:
如果有执行权限:直接执行文件
如果没有执行权限:sh/bash
循环
for
2.2 for循环表达式
for循环
do
要做什么
done
while
while循环表达式
do
要做什么
done
while循环
read:用于读取用户的输入
read -p "please input your name" NAME
if判断语句
if []
then
elif
then
else
fi
case判断语句
case $var in
value1)
exec
;;
value2)
exec
;;
*)
exec
;;
esac
//-n:不换行 -e:连在一起
sh x while2.sh
三、定时任务:设置一个定时,到达某个时间去执行某个任务
crontab -e:编辑一个定时任务
格式:
* * * * * command
分钟 小时 日 月 周 执行的命令
0-59 0-23 1-31 1-12 0-7
0和7:都表示星期日
-》每年3月1号凌晨12点执行
00 00 1 3 * more /etc/passwd
-》每天3点,9点,11点
0 3,9,11 * * *
-》连续时间段
0 3-11 * * *
-》每隔一个小时
0 */1 * * *
#每天11点58分执行脚本