shell
1. shell execution
chmod +x fileName
sh fileName
source fileName
2.conbine command
管道 |
重定向
输入 <
输出 > 、>> ;错误输出 2> 、2>>;混合输出 &> &>>
逻辑操作符 && , ||
3.Variable
Var1 = value
$Var1
${Var1}
定界符
双引号 :允许引用,转义
单引号 :不允许引用,转义
反..撇号 或$()命令替换
4.环境变量
系统 USER LOGNAME HOME SHELL
用户PATH LANG CLASSPATH
env
special
$?前一条命令状态,0为正常,非0不正常
$0脚本自身的程序名
$1-9第1-9个参数位置参数
$*所有位置的参数内容
$#命令行位置参数个数
5.数值运算
整数
expr
$[]
skills
let var++ ;let var--
RANDOM var
seq start end
6.字符串
截取
路径分割
.dirname、basename
expr
expr substr $var1 start length
${}
${var1 : start:length}
替换
${}
${Var/old/new}Var 里第一个old替换为new
${Var//old/new}Var 里所有的old替换为new
随机字符串
/dev/urandom
/usr/bin/md5sum
/bin/cut
head -1 /dev/urandom | md5sum
echo $Var1 | cut -b start-end
7.条件测试
测试操作规范
$?
test expression
[expression]
目录文件检测
-d 是否为目录directory
-e目录是否存在Exist
-f 是否为文件File
权限检测
-r 是否有读权限read
-w是否有写权限write
-x是否有课执行权限execute
[-w "/etc/shadow"]
整数值比较
-eq相等equal
-ne不相等not equal
-gt大于greater than
-lt小于letter than
-ge大于或等于greater or equal
-le小于或等于lesser or equal
字符串匹配
=
!=
8.if判断
for循环
case
条件if
if 条件测试
then 命令
fi
if 条件测试
then 命令
else 命令
fi
if 条件测试
then 命令
elif 条件测试
then 命令
...
else 命令
fi
8.for循环
for var in list
do
命令
done
9.case
case var in
value1)
命令;;
value2)
命令;;
... 。。
*)
默认命令序列;;
esac
10.awk
awk '模式 {操作}' 文件1 文件2
常见内置变量
NR行数
F字段分隔,缺省为空格或Tab
$n当前行的第n个字段
$0当前行的所有文本内容
11.sed
常用的操作类型
p输出/打印文本
n取下一行文本
d删除
s字符串替换
a追加新的文本