1.rw-r-r:第一部分rw代表当前用户具有读写的权限,第二部分的r代表当前用户所在用户族中其他成员只用读的权限,最后一个r表示额外的其他用户只有读的权限。
2.rwxr-xr-x:rwx代表读写权限和执行权限,中间三位r-x代表有读和执行权限,没有写权限,最后三位代表其他者的权限,同样是读和执行权限,没有写权限。
3.shell变量:
一般shell的变量赋值的时候不用带"$",而使用或者输出的时候要带"$".加减乘除的时候要加两层小括号。括号外面要有一个"$",括号里面变量可以不用"$".注意的是变量赋值,变量使用的时候不能用空格,否则会被解析成命令,报错五次命令。
幂的运算符为**如a^3表示为a**3
关于某个文件名的文件类型判断,如 test -e filename
-e:该文件名是否存在
-f:该文件名是否存在且为文件
-d:该文件名是否存在且为目录
-b:该文件名是否存在且为块设备文件
-c:该文件名是否存在且为字符设备文件
-S:该文件名是否存在且为socket文件(大写S)
-p:该文件名是否存在且为FIFO文件
-L:该文件名是否存在且为链接文件
关于文件的权限检测,如test -r filename
-r:该文件名是否存在且具有“可读”权限
-w:该文件名是否存在且具有“可写”权限
-x:该文件名是否存在且具有“可执行”权限
-u:该文件名是否存在且具有“SUID”属性
-g:该文件名是否存在且具有“SGID”属性
-k:该文件名是否存在且具有“sticky bit”属性
-s:该文件名是否存在且为“非空白文件”(小写s)
两个文件之间的比较,如:test file1 -nt file2
-nt:newer than,判断file1是否比file2新
-ot:older than,判断file1是否比file2旧
-ef:判断file1与file2是否为同一文件,可用在判断hard link的判定上。主要意义在于判定两个文件是否指向统一个inode
关于两个整数之间的判定,如test num1 eq num2
-eq:equal,num1等于num2
-ne:not equal,num1不等于num2
-gt:greater than,num1大于num2
-lt:less than,num1小于num2
-ge:great equal,num1大于等于num2
-le:less equal,num1小于等于num2
判定字符串的数据
test -z string:判定字符串是否为0,若string为空字符串,则为true
test -n string:判定字符串是否为非零,若string为空字符串,则为false
多重条件判定,例如:test -r filename -a -x filename
-a:两个条件同时成立!例如 test -r file -a -xfile,则file同时具有 r 与 x 权限时,才回传true
-o:任何一个条件成立!例如 test -r file -o -x file,则file具有 r 或者 x 权限时,才回传true
!:反向状态!如test !-x file,当file不具有x时,回传true
shell变量表达式:
${#string} 计算$string的长度
${string:position} 从pos开始提取字符串
${string:position:len} 从pos开始提取长度为len的字符串
${string#substr} 从开头删除最短匹配子串
${string##substr} 从开头删除最长匹配子串
${string%substr} 从结尾删除最短匹配子串
${string%%substr} 从结尾删除最长匹配子串
shell条件分支结构语句:
格式:if条件;then结果fi,最后一定要有fi。在shell脚本里面,控制分支结构结束都要和开头的单词相反,例如,if<->fi,case<->easc
shell循环语句:
1.while语句
while语句是只要条件为正就执行下面语句
while 条件
do
语句
done
2.until语句
until语句是只要条件为加就执行下列语句
until条件
do
语句
done
3.for语句
格式:
for变量in列表
do
语句
done