随笔

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

相关推荐

  • linux基础2

    linux基础2

    Linux干货 2018-03-18
  • 正则表达式练习

    一: 1、找出ifconfig命令结果中本机的所有IPv4地址         2、查出分区空间使用率的最大百分比值 3、查出用户UID最大值的用户名、UID及shell类型 4、查出/tmp的权限,以数字方式显示 二: 1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式) 2、显示/etc…

    Linux干货 2016-08-12
  • gawk基础

     一、gawk 是什么 在了解gawk之前,先了解一下文本三工具      文本过滤工具:grep|egrep|fgrep   其中fgrep不支持正则表达式 1.行编辑器:sed      sed 有两种空间   模式空间    保持空间 2. 文…

    Linux干货 2016-06-24
  • 系统基础之用户,组管理作业题

    、创建testuser uid 1234,主组:bin,辅助组:root,ftp,shell:/bin/csh home:/testdir/testuser 1 2 3 [root@wen-7 ~]# useradd -u 1234 -g bin -G root,ftp&nbsp…

    Linux干货 2016-08-04
  • Nginx的编译安装

    nginx.html Nginx的编译安装 一、Nginx的特点 二、获取并编译Nginx 三、配置主页面 四、配置编译文件时的选项及模块 一、Nginx的特点 1、Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核 Poll 模型,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。 2、Nginx 具…

    Linux干货 2016-03-20
  • Linux文件查找之locate、find详解

     locate命令详解 locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库文件,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updat…

    Linux干货 2016-08-16

评论列表(1条)

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

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