随笔

                    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

相关推荐

  • 20161021第6天作业

    20161021第6天作业 1、将PATH变量每个目录显示在独立的一行  echo "$PATH" |tr ':' '\n' 2、将指定文件中0-9分别替代成a-j tr '0-9' 'a-j' <文件 3、将文件中每个单词(由字母组成)显示在…

    Linux干货 2016-10-23
  • grub详解

    grub详解 1、GRUB(Boot Loader): grub:grub 0.x:grub1 legacy传统的版本 grub 1.x:grub2 grub legacy: 第1阶段:mbr 第1.5阶段:mbr之后的扇区中,让第一阶段中的boot loader能识别第二阶段所在分区上的文件系统 第2阶段:磁盘分区(/boot/grub/) 配置文件/et…

    2017-09-03
  • 新建用户的全​程解析

     新建用户的全程解析: 1,编辑passwd文件,添加newuser用户一行  nano /etc/passwd  newuser:x:2000:2000:NEWUSER:/home/newuser:/bin/bash  2,编辑group文件,添加newuser组一行 &nbs…

    系统运维 2016-08-05
  • iptables介绍和使用

    iptables/netfilter:    Packets Filter Firewall:          包过滤型防火墙:  Firewall:隔离工具,工作于主机或网络的边缘处,对经由的报文根据预先定义的规则(识别标准)进行检测,对于能够被规则匹配到的报文实行…

    Linux干货 2017-04-29
  • N25-第一周 总结

    一、描述计算机的组成及其功能     CPU:包括运算器、控制器、寄存器、缓存,计算枢纽,网络的包处理、磁盘读写、数学计算等。     内存:加载数据,提高计算速度,程序被加载到内存成为进程运行。     输入:键盘、鼠标     输出:打印机、显示器 二、按系列罗列linux的…

    Linux干货 2016-12-05
  • 基本正则表达式

    城还是这座城,人已非故人

    2018-04-18

评论列表(1条)

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

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