环境变量的显示
名词分析
环境变量:是对整个bash环境有效的变量
自定义变量:只对当前的bash环境有效,对子程序无效。 exprt命令还为子例程启用自定义变量。 (对父程序无效! )
1.2 .查看env环境变量
3.
4 .显示set自定义变量
5.
6.exprt显示当前在exprt中声明的自定义变量
7.
8.declare声明变量类型。 例如,德克勒- r字段将字段声明为只读类型)
9.
10 .显示所有别名
11.
12 .显示histry历史记录命令
13.
14. *! num执行第n次的历史命令
15.
16. *! cmmand执行上面找到的第一个cmmand命令
17.
18. *! 实行前名琳
19.
特殊环境变量
1.2.PS1:命令之前的提示符
3.
4.$:当前外壳的pid
5.
6 .前的命令的执行结果代码
7.
8.
9.
PS1格式
1.2. d :可以显示“星期一”的日期格式,如“MN FEB 2”
3.
4.H :完整的主机名。 根据丼例杢的记载,zxdjm的练习机是《www.vbird.tsai》
5.
6.h (只有叺主机名是第一个小数点后的名称,例如zxdjm主机在“www”之后被省略
7.
8.t :显示时间为24小时格式的“HH:MM:SS”
9.
10.T :显示时间为12小时格式的“HH:MM:SS”
11.
12.A :显示时间为24小时格式的“HH:MM”
13.
14.@ :显示时间、12小时格式的“am/pm”样式
15.
16.u )当前用户的帐户名,如“rt”;
17.
18.v :BASH的版本信息,例如zxdjm的测试板为3.2.25(1),仅显示“3.2”
19.
20.w :完整的工作目录名称,由根目录写入的目录名称。 但是,房子的目录是~叏代;
21.
22.W :剑在basename中无法计数工作目录名称,因此只列出最后的目录名称。
23.
24 () # :发布了第几个问候命令。
25.
26.$ :提示字符,rt的情况下提示字符为#,否则为$啊~
27.
字符串操作
1.2.**! * *注意:关键字必须表示带*的部分,而不是特定的字符串。
3.
4 .删除4.${field#关键字}最小一致关键字的部分
5.
6.${field##关键字}删除最大一致关键字的部分
7.
8.${field%关键字}之后删除
9.
10.$ {字段% %关键字}之后删除
11.
12.
13.
14.$ {字段/旧字符串/新字符串}最小替换
15.
16.${field//旧字符串/新字符串}最大替换数
17.
1.2。
3.${var}变量的原始值
4 .如果4.${var:-wrd}变量var为空或被删除,则返回wrd而不更改var的值。
5 .如果5.${var:=wrd}变量var为空或被删除,则返回wrd,并将var的值设置为wrd。
6.${var: message}变量var为空或被删除时,可以通过将消息message发送到标准错误输出,来检测变量var是否可以成功代入。
7 .如果shell脚本显示此替换,则脚本将停止执行。
8 .如果声明了8.${var: wrd}变量var或有值,则返回wrd而不更改var的值。
如果拆下:则拆下var值为null的情况
10.
11 .如果变量已被删除(unset ),如$ { var-wrd } :则返回wrd而不更改var的值。
12.
外壳条件测试
文件类型的判断
1.2。
3. -e这个“文件名”存在吗? (常用) )。
4.
5. -f这个“文件名”存在,是文件吗? (常用) )。
6.
7. -d这个“文件名”是否存在,是目录(directry )? (常用) )。
-b 该『档名』是否存在且为一个 blck device 装置?8.
9. -c 该『档名』是否存在且为一个 装置?
10.
11. -S 该『档名』是否存在且为一个 Scket 档案?
12.
13. -p 该『档名』是否存在且为一个 FIF (pipe) 档案?
14.
15. -L 该『档名』是否存在且为一个连结档?
16.
文件的权限检测
1.2.
3. -r 侦测该档名是否存在且具有『可读』的权限?
4.
5. -w 侦测该档名是否存在且具有『可写』的权限?
6.
7. -x 侦测该档名是否存在且具有『可执行』的权限?
8.
9. -u 侦测该文件名是否存在且具有『SUID』的属性?
10.
11. -g 侦测该文件名是否存在且具有『SGID』的属性?
12.
13. -k 侦测该文件名是否存在且具有『Sticky bit』的属性?
14.
15. -s 侦测该档名是否存在且为『非空白档案』?
16.
17.
18.
19.
两个文档之间的比较
1.2.
3. -nt (newer than)判断 file1 是否比 file2 新
4.
5. -t (lder than)判断 file1 是否比 file2 旧
6.
7. -ef 判断 file1 和file2 是否为同一档案,可用在判断 hard link 的判定上。
8.
字符串的算术比较
1.2.
3. -eq 两数值相等 (equal)
4.
5. -ne 两数值不等 (nt equal)
6.
7. -gt n1 大于 n2 (greater than)
8.
9. -lt n1 小于 n2 (less than)
10.
11. -ge n1 大于等于 n2 (greater than r equal)
12.
13. -le n1 小于等于 n2 (less than r equal)
14.
判定字符串的数据
1.2.
3. -z string 判定字符串是否为 0 ?若 string 为空字符串,则为 true
4.
5. -n string 判定字符串是否非为 0 ?若 string 为空字符串,则为 false。注: -n 亦可省略
6.
7. str1 = str2 判定 str1 是否等于 str2 ,若相等,则回传 true
8.
9. str1 != str2 判定 str1 是否不等于 str2 ,若相等,则回传 false
10.
11.
12.
login shell的初始化流程
通配符介绍
1.2.
3.* 代表『0 个刡无穷多个』任意字符
4.
5.? 代表『一定有一个』任意字符
6.
7.[ ] 同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字
8.
9.符, 可能是 a, b, c, d 这四个任何一个』
10.
11.[ - ] 若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到9 之间
12.
13.的所有数字,因为数字的诧系编码是连续的!
14.
15.[^ ]若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定
16.
17.有一个字符,只要是非 a, b, c 的其他字符就接受的意思。
18.
&&和||
1.2.command1 && command2 || command3 =
3.
4.if(comand){
5.
6. command2;
7.
8.}else
9.
10. command3;
11.