首页 > 代码库 > Linux初学之bash相关

Linux初学之bash相关

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)


Linux初学之bash相关