随笔

                    bash基础特性整理以及shell编程的思路整理    


  在linux的学习中,目前就学习到第六课时半天的时候发现在bash基础特性当中,使用不同的命令以及shell编程中,发现有很多的bash变量在不同的环境使用的方法都不一样,下面就结合第一节课到第6节课的bash特性进行整理如下:

    1,什么是bash:

     bash是许多Linux平台中内定的shell,bash脚本功能在处理自动循环或大的任务方面可以节省大量的时间

       以CentOS6为例:查看当前系统中有多少个bash:

        blob.png

   

     bash的分类:

        blob.png

    以上图可以看出在Linux中的bash可以大致可以分成2种,下面就详细介绍一下生效划分的bash与功能划分的bash的意义:

        生效划分的bash:

        blob.png

    功能划分的bash:

        blob.png


       bash中的变量的种类:

        根据变量的生效范围等标准:

         本地变量:生效范围为当前shell进程:对当前shell之外的其他shell进程,包括当前shell 的子shell不生效

         环境变量:当前shell进程及其子进程

         局部变量:生效范围为当前shell进程中某代码片段(通常指函数)

         位置变量:$1,$2,…来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数

       特殊变量:$?,$0,$*,$@,$#


    例1:history历史命令查看:

    blob.png

    history是否对其他用户进行生效呢?以wostop用户登录之后输入history命令:发现2个不同的用户登录使用history命令显示的结果是不同的

        blob.png

      按照bash所给的/etc/profile, /etc/porfile.d/*.sh ,~/.bashrc ,~/etc/bashrc,/etc/bash_profile查看发现 :在/etc/profile 下有关于histroy的配置变量:

        blob.png


       由于不同用户登录使用的命令是不一样的,就可以判定存储的histroy的bash存放在个人的bash中:

         blob.png

        上述解释了bash中有个人个全局的区别:

    本地变量:

    变量赋值:name='value'

        可以使用引用:

            value:(1)可以是直接字串:name="username"

                (2)变量引用:

                name="$sername"

                (3)命令引用:name=`COMMAND`,name=$(COMMAND)

    

            变量引用:${name},$name

"":弱引用,其中的变量引用会被替换为变量值;

    ‘’:强引用,其中的变量引用不会被替换为变量值,而保持原字符串;


            

                bash中的算术运算:

+ – * / %(取余数)**

实现算术运算:

(1)let var=算数表达式

(2)var=$[算术表达式]

(3)var=$(())

(4)var=$(expr args1 arg2 arg3…)


 


      各个通配符已经在shell编程,正则表达式的使用法以及区别:

        glob:bash中用于事先文件名"通配"

        blob.png

    bash的快捷键:

Ctrl+l:清屏,相当于clear命令;

Ctrl+a:跳转光标命令首部;

Ctrl+e:跳转至命令尾部;

Ctrl+c:取消命令执行;

Ctrl+u:删除命令行首至光标所在处的所有内容;

Ctrl+k:删除光标所在处至命令行尾部的所有内容;

    

    grep正则表达式:文本过滤工具(默认处于贪婪模式)

        –color=auto:对匹配到的文本着色显示:

   -v:反向显示:显示不能够被pattern匹配到的行;

   -i:匹配时忽略字符的大小写;

   -o:仅显示匹配到字符串;

   -q:检查匹配后不向屏幕输出:静默模式

   -A:after,后#行:-B:before,前#行;

   -C:context,前后各#行:

   -E:使用扩展的正则表达式

   -F:使用fegrp表达式

    GREP中的字符匹配,这里和glob的字符匹配有所不同:
        blob.png

       OK上述将grep与glob的相同且不同意义的字符做了对比:grep匹配次数的用法:

    .*:任意长度的任意字符:

    \?:匹配其前面的字符0次或1次,即前面的字符可有可无:

    \+:匹配其前面的字符至少1次:

    \{m\}:匹配前面的字符m次:

    \{m,n\}:匹配前面的字符至少m次,至多n次:

    \{0,n\}:匹配前面的字符至多n次:

    \{m,\}:匹配前面的字符至少m次:

  位置锚定:

    ^:行首锚定:例如^root

    $:行尾锚定:例如:root$

    ^$:空白行:

    ^[[ :space: ]]*$:空格字符

    \<或\b:词首锚定:用于单词模式的左侧:\<root

    \<或\b:词尾锚定:用于单词模式的左侧

    \<PATTERN\>:匹配整个单词

    分组:\(\):将一个或多个字符捆绑在一期,当作一个整理进行处理:

    

原创文章,作者:wostop,如若转载,请注明出处:http://www.178linux.com/21302

(0)
wostopwostop
上一篇 2016-07-07
下一篇 2016-07-07

相关推荐

  • 虚拟机系统

    系统安装

    2018-04-01
  • N21_第二周练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理类命令:cp,mv.rm 复制命令:cp 格式:        cp [OPTION]… [-T] SOURCE DEST        cp [OPTION]… SOU…

    Linux干货 2016-07-16
  • 22期第十二周课堂练习

    1、请描述一次完整的http请求处理过程; (1)建立和处理连接:接收请求或者拒绝请求; (2)接收请求:接收来自于网络上的主机请求报文中对某特定的资源的一次请求的过程; (3)处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息 (4)访问资源:获取请求报文中请求的资源 (5)构建响应报文; (6)发送响应报文; (7)记录日志; 2、h…

    Linux干货 2016-12-26
  • 用户管理类命令

    2018-03-18

    Linux干货 2018-03-18
  • Linux系统压缩和解压缩工具gzip、bzip2、xz以及tar打包工具总结

    在Linux系统使用过程中,对于一些不是常用的文件,利用cpu的时间资源对文件进行压缩可以节省一定的磁盘空间,对系统中某个目录经常会有备份的需求,可以使用Linux系统中的tar打包工具实现,文件的压缩对于大量的网络文件传输可以节约带宽,同时也能降低服务器的负载,我们经常需要从网站下载软件包到本地主机,这些包基本都是打包压缩的,要想使用安装,需要我们解压缩他…

    Linux干货 2016-08-18
  • 第三周作业

    作业

    Linux笔记 2018-04-05

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-07 11:18

    写的很好,排版还可以在漂亮一点,可以多画点图加深印象,加油