day19-20200628
p73.预定义变量
位置参数变量就是预定义变量
【$?】上一个命令的返回状态,0表示正确执行,非0不正确执行,非0的值是自己定义的。命令不存在是127。文件找不到是2。【&&】逻辑与【||】逻辑或,都是需要判断第一条命令是否正确,此处就可以连接起来了。
【$$】显示当前进程的pid
【$!】显示最后一个后台执行的pid
【read 选项 变量名】接收键盘输入,相当于python中的input
-p “提示信息”
-t 秒数
-n 字符数,满足字符后就直接执行。
-s 隐藏输入的信息
p74.数值运算与运算符
不推荐【declare [+/-] [选项] 变量名】声明变量类型
+:取消类型
-:设定类型
-i:整数型
-x :声明为环境变量,export 声明环境变量作用相同,但是export用的较多。
-p:显示声明变量的类型
不推荐:【expr或者let】数值运算工具
【dd=$(expr $aa + $bb)】注意“+”左右的空格不可以省略。
太复杂 不推荐使用
推荐:【$((运算式))或者$[运算式]】
运算符:优先级从上到下。
常用的就是:加减乘除,逻辑与,逻辑或。
p75.变量测试与内容替换
感觉用处不大,变量测试最主要的就是显示x的值,用来测试y的值是否存在。
shell中逻辑关系比较复杂
p76.环境变量配置文件简介
永久生效只有写在配置文件。
【source 配置文件】文件直接生效
【. 配置文件】配置文件直接生效
系统默认环境变量,例如:PATH,HITSICE等
常见的环境变量配置文件
【/etc/profile】【/etc/profile.d/*.sh】【/etc/bashrc】【~/.bashrc】【~/.bash_profile】
p77.环境变量配置文件作用
【/etc/profile】所有登录用户生效
【/etc/profile.d/*.sh】所有登录用户生效
【/etc/bashrc】所有登录用户生效
【~/.bashrc】只对当前用户生效
【~/.bash_profile】只对当前用户生效
优先级:不用变量叠加的话,后面的会覆盖前面的值。
登录-【/etc/profile】-( 读取【/etc/profile.d/*.sh】所有文件-【/etc/profile.d/lang.sh】-【/etc/locale.conf】)-【~/.bash_profile】-【~/.bashrc】-【/etc/bashrc】-命令提示符
p78.其他环境变量配置文件和登录信息
【~/bash_logout】注销时保存的信息
【~/bash_history】历史命令保存,排错信息的保存手段。
【/etc/issue】本地终端前欢迎信息,最好写一些警告信息。
\d 当前系统日期
\s 操作系统名称
\l 登录终端
\m 硬件结构
\n 主机名
\o 域名
\r 内核版本
\t 系统时间
\u 用户序列号
【/etc/issue.net】远程终端前欢迎信息,只能写文本。上面的选项不可以使用。默认文件不生效。需要生效的话,需要【/etc/ssh/ssd_config】加入“Banner /etc/issue.net”才能显示,需要重启ssh服务,service restart sshd 或者 systemctl restart sshd
【/etc/motd】登陆后的欢迎信息。
p78.正则表达式
重要点,比较期待的!!
通配符和正则表达式都是用来匹配的。
通配符是用来匹配符合条件的文件名。完全匹配,ls,find,cp 【* ? []】
正则是用来匹配符合条件的文件内容。部分匹配,grep,awk,sed
基础正则表达式
【】前一个字符匹配0次或者任意多次
“a”会匹配所有的字符,有或者没有都会匹配。“aa”至少有一个a。
【.】匹配除了换行符外的任意一个字符
“a .. b”a b间有两个字符
“a . b”a b间所有字符
“.*”所有字符
【^】以什么开头
“^M”以大写M开头的行
【$】以什么结尾
“$N”以大写N结尾的行
【^$】匹配空白行
【[]】中括号,匹配中括号中指定的任意一个字符。
“na[ims]e”匹配[]中的一个,要么i 要么 m 要么s
【[^]】匹配除了中括号的字符以外的任意字符
“[^a-z]”非字母
“[^0-9]”非数字
【\】转义符
【{n}】前面的字符恰好出现n次
【{n,}】前面的字符不小于n次
【{n,m}】前面的字符至少n次,最多m次