正则表达式
^表示开头
$表示结尾
[a-z]
[A-Z]
[0-9]
. 单个任意字符
* 前面字符重复的次数>=0
+前面字符重复出现的次数>=1
? 前面字符重复出现的次数0或1次
{n,m}前面字符重复出现的次数n到m次
{n,}出现次数大于n次
{,m}出现次数小鱼m次
grep + 正则
sed '匹配条件/执行的动作' /etc/passwd 或者 cat /etc/passwd | sed '匹配条件/执行的动作'
替换 sed 's/old/new/g'
awk awk -F: '{print $1}' /etc/passwd 查看passwd中的第一列 $0所有 $1第一列 $2第二列
Shell
环境变量 (set命令)
------>
系统 --- 多用户
用户环境变量(/root/.bash_profile) ,, 系统环境变量(/etc/profile)
位置变量
---通常和脚本联合使用
---$0 脚本名称
----$1 ..... $9 位置参数
预定义变量
由系统保留和维护的一组特殊变量,由系统保留和维护的一组特殊变量
$0 保存当前线程和脚本的名称
$! 后台运行的最后一个进程的PID号
$? 代表程序退出状态(0表示成功 非0表示失败)即上一个命令执行结果
$*代表所有参数的内容(整体)
$$代表当前进程的PID号码
$#代表当前shell的参数个数
$@代表所有参数内容(逐个读取)
自定义变量
---语法格式 : name=[value]
--- 注意:
变量等号两边不能有空格
变量对大小写敏感
--- 定义好后使用($变量名)来调用变量的值
shell算数运算
+ - * / %
-----$((expression))
-----$[expression]
-----expr expression
a=2
b=3
echo $((a+b))
expr $a + $b
shell 内置测试判断 : 成功/成立 ---- 失败/不成立
Linux提供了 非(!) ,或(-o) ,与(-a)三个逻辑操作符,,用于将测试条件连接起来,,
优先级为 : !最高,-a次之,-o最低
数值比较
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真
字符串比较
=等于则为真
!= 不等于则为真
-z 字符串长度伪则为真(长度为0,为空)
-n 字符窜长度不伪则为真(长度不为0)
文件测试
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真
---- test 测试表达式
[root@localhost ~]# echo $a $b
2 3
[root@localhost ~]# test $a -lt $b
[root@localhost ~]# echo $?
0
---- [测试表达式] 最常见的
---- 注意 测试表达式与中括号之间一定要有空格
[root@localhost ~]# echo $a $b
2 3
[root@localhost ~]# [ $a -lt $b ]
[root@localhost ~]# echo $?
0
[root@localhost ~]#
&&逻辑与
-- cmd1 && cmd2 cmd1命令成功了才会执行cmd2
||逻辑或
-- cmd1 || cmd2 cmd1失败了才会执行cmd2
; 无逻辑关系
-- cmd1 ; cmd2 cmd1执行完后执行cmd2