bash基础特性整理以及shell编程的思路整理
在linux的学习中,目前就学习到第六课时半天的时候发现在bash基础特性当中,使用不同的命令以及shell编程中,发现有很多的bash变量在不同的环境使用的方法都不一样,下面就结合第一节课到第6节课的bash特性进行整理如下:
1,什么是bash:
bash是许多Linux平台中内定的shell,bash脚本功能在处理自动循环或大的任务方面可以节省大量的时间
以CentOS6为例:查看当前系统中有多少个bash:
bash的分类:
以上图可以看出在Linux中的bash可以大致可以分成2种,下面就详细介绍一下生效划分的bash与功能划分的bash的意义:
生效划分的bash:
功能划分的bash:
bash中的变量的种类:
根据变量的生效范围等标准:
本地变量:生效范围为当前shell进程:对当前shell之外的其他shell进程,包括当前shell 的子shell不生效
环境变量:当前shell进程及其子进程
局部变量:生效范围为当前shell进程中某代码片段(通常指函数)
位置变量:$1,$2,…来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
特殊变量:$?,$0,$*,$@,$#
例1:history历史命令查看:
history是否对其他用户进行生效呢?以wostop用户登录之后输入history命令:发现2个不同的用户登录使用history命令显示的结果是不同的
按照bash所给的/etc/profile, /etc/porfile.d/*.sh ,~/.bashrc ,~/etc/bashrc,/etc/bash_profile查看发现 :在/etc/profile 下有关于histroy的配置变量:
由于不同用户登录使用的命令是不一样的,就可以判定存储的histroy的bash存放在个人的bash中:
上述解释了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中用于事先文件名"通配"
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的字符匹配有所不同:
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
评论列表(1条)
写的很好,排版还可以在漂亮一点,可以多画点图加深印象,加油