bash的颜色显示规则:
ascll编码对于颜色进行设置
\033: ctrl键
[ :控制字符和颜色代码之间的间隔字符
0m:关闭颜色属性的命令
1m:对于显示的文本字符进行加粗
4m:为文本字符加下划线标识 "\033[4mhellow word\033[0m"
5m:使文本字符闪烁
7m:将文本字符的背景色与前景色交换显示
8m:将文本字符的背景色和前景色设置为一个颜色
30m-39m:设置文本字符的前景色; 38m和39m暂时没有用
40m-49m:设置文本字符的背景色; 48,49m暂时没用
例子: echo -e "\033[4;5;33;43mhellow word\033[0m"
一个完整的程序应包括四类文件:
二进制文件 头和库文件 帮助文档 配置文件
bash——CLI(命令行接口)的一种
bash同样属于完整的应用程序,有这四类文件:
bash的配置文件:
三类:
profile类:
为交互式登录的shell进程实现功能初始化的配置文件
bashrc类
为非交互式登录的shell进程实现功能启动配置的配置文件
logout类:
为交互式登录的shell进程提供终止及清理类的功能的配置文件
shell类型:
交互式登录的shell:
直接通过某个终端输入账号密码后打开的shell进程
使用 su - username su -l username 执行切换登录打开的shell进程
非交互式登录的shell:
在图形界面下,通过菜单或右键菜单打开的终端的shell进程
使用su username执行切换登录打开的shell进程
bash的配置文件:
profile类:
全局:对所有用户都生效的配置文件:
/etc/profile
/etc/profile.d/*.sh
注意:在红帽系列的操作系统中,通常情况下,一个配置文件内容很多,格式复杂,我们会将其切割成多个片段,将切割出来的片段统一存放在“程序名.d”目录中,在这样的目录中所保存的片段文件,大多会以统一的文件后
缀名来命名
用户个人的配置文件:仅仅只是针对某个用户有效的配置文件;
~/.bash_profile
profile类配置文件的作用:
1.定义用户的环境变量
2.运行脚本或执行命令
bashrc类:
全局:
/etc/bashrc
用户个人
~/.bashrc
bashrc类配置文件的作用:
1.定义本地变量
2.定义命令别名
3.定义umask
注意:只有root用户可以修改全局类配置文件,用户只可以修改家目录中的个人配置文件
交互式登录的shell进程,会按照顺序加载下列配置文件:
/etc/profile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc
/etc/bashrc
非交互式登录的shell进程,会按照顺序加载下列配置文件:
~/.bashrc /etc/bashrc /etc/profile.d/*.sh
所有在命令行中执行的命令操作,只要没涉及到文件修改的,一般都只是针对当前shell生命周期有效,只要shell进程结束,所欲设置失效
配置文件的作用:使得我们赖以生存的配置信息可以长期有效,只要不修改配置文件中的内容,每一次打开
shell都会使曾经的配置生效
让配置文件中的新定义的配置能够立即生效的方式:
1.sourse命令:
sourse /PATH/TO/SOME_CONF_FILE
. /PATH/TO/SOME_CONF_FILE
2.exec命令
exec /PATH/TO/SOME_CONF_FILE
bash中变量中存放的字符串处理方式:
弱变量:
无需事前定义即可使用
没有变量数据类型的硬性要求,默认是字符型
1. 字符串切片:
${#var};返回字符串类型的变量var的长度
${var:offset}返回字符串变量var中第offset个字符后面的内容,不包括第offset个字符 offset取值范围[0-字符串长度-1]
${var:offset:number}: 返回字符串blvar中从第offset个字符后面开始,长度为number个字符
${var: -length}:取整个字符串最右侧的length个字符
2.基于模式取子串:
${var#*PATTRN}:自左而又去查找var变量所存储的字符串中,第一次被PATTERN匹配的字符,删除从字符串开始到PATTERN匹配的第一个字符之间的所有字符串
${var##*PATTRN}:自左而又去查找var变量所存储的字符串中,所有被PATTERN匹配的字符,删除从字符串开始到PATTERN匹配的最后一个字符之间的所有字符串
${var%PATTRN*}:自右而左去查找var变量所存储的字符串中,第一次被PATTERN匹配的字符,删除从字符串结尾到PATTERN匹配的第一个字符之间的所有字符串
${var%%PATTRN*}:自右而左去查找var变量所存储的字符串中,第一次被PATTERN匹配的字符,删除从字符串结尾到PATTERN匹配的最后一个字符之间的所有字符串
3.查找替换
${YAR/PATTERN/SUBSTRING}:在var变量中查找匹配PATTERN的内容。将其第一个匹配的结果更换成SUBSTRING
${YAR//PATTERN/SUBSTRING}:在var变量中查找匹配PATTERN的内容。将其所有匹配的结果更换成SUBSTRING
${VAR/#PATTERN/SUBSTRING}:在var变量中查找行首匹配PATTERN的内容。将匹配的结果更换成SUBSTRING
${VAR/%PATTERN/SUBSTRING}:在var变量中查找行尾匹配PATTERN的内容。将匹配的结果更换成SUBSTRING
4.查找删除
${YAR/PATTERN}:在var变量中查找匹配PATTERN的内容。将其第一个匹配的结果删除
${YAR//PATTERN}:在var变量中查找匹配PATTERN的内容。将其所有匹配到的结果删除
${YAR/#PATTERN}:在var变量中查找匹配PATTERN的内容。将行首匹配的结果删除
${YAR/%PATTERN}:在var变量中查找匹配PATTERN的内容。将行尾匹配的结果删除
5.字符的大小写转换
${var^^}:将var变量中的所有小写字母转换成大写字母
${var,,}:将var变量中的所有大写字母转换成小写字母
6.变量 赋值
${var:-value}:如果变量var为空,或未被设置,那么直接返回value的值否则返回var的值
${var:+value}:如果变量var不为空,返回value的值
${var:=value}:如果变量var为空,或未被设置,那么直接返回value的值,并且将value的值赋给var;否则直接返回var的值
7. 变量的间接引用
如果第一个变量的值恰好是第二个变量的变量名,从第一个变量的引用第二个变量的值的方法,就称为间接变量引用
var1=var2
var2=value
bash提供了两种格式的间接变量引用方式
eval MYVAR=\$$var1
MYVAR=$(!var1s)
原文地址:http://shenmengdong.blog.51cto.com/12654035/1918338