随笔

                    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 10:48
下一篇 2016-07-07 10:48

相关推荐

  • 8.12作业

    作业: 1、查找/var目录下属主为root,且属组为mail的所有文件   find /var  -user root  -group  mail -ls 2、查找/var目录下不属于root、lp、gdm的所有文件   find /var -not \( -user root  -o -user…

    Linux干货 2016-08-15
  • HA Cluste 的配置:keepalived:vrrp协议 主备模型

    keepalived:vrrp协议 主备模型 第一步配置出始环境: 准备两节点: 主节点:172.18.57.7 long1 备节点:172.18.57.8 long2 (1) 各节点时间必须同步; 同步时间: ~]# yum -y install chrony ~]# vim /etc/chrony.conf ~]# systemctl start chr…

    Linux干货 2017-05-15
  • 马哥教育网络班22期+第4周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。     [root@director2 ~]# cp -a /etc/skel /home/tuser1   &n…

    Linux干货 2016-08-29
  • week4

    一,复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没 有任何访问权限; cp -r /etc/skel/ /home/tuser1 chmod -R go= /home/tuser1/ 二,编辑/etc/group文件,添加组hado…

    Linux干货 2016-11-18
  • 包管理及源码安装Apache

    一,概述 yum 仓库的安装 在/etc/yum.repos.d/目录下创建后缀名为repo的配置文件 [CentOS7] name= baseurl= gpgcheck= enabled= 配置文件基本包含的四个要求 安装及升级本地程序包: * localinstall rpmfile1 [rpmfile2] […] (用install替代) …

    Linux干货 2016-09-01
  • Linux的发行版,并描述不同发行版之间的联系与区别

    Linux是开源的,因此有不同的社区组织或公司可以在此基础上开发,设置不同的样式或功能特性。发行版的分支有几百种之多。 主要分支如下: Debian ubuntu mint knopix Slackware S.u.S.E SLES OpenSUSE RedHat: RedHat Enterprise CentOS:企业社区版 Fedora Core:桌面版…

    Linux笔记 2018-05-10

评论列表(1条)

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

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