bash的特性:hash,变量
命令hash :hash命令
变量:
本地变量,环境变量,局部变量
位置参数变量,特殊变量
变量赋值:name=value,export name=value,declare -x name=value
变量引用:$name,${name}
撤销变量:unset name
bash脚本编程,运行脚本
顶格写#!/bin/bash
脚本执行中以#开头的 和空白行均被省略
bash的配置文件
profile类:登陆式shell
bashrc类:非登陆式shell
登陆式shell:读取路径的顺序如下
/etc/proflile --> /etc/proflie.d/*.sh -->~/.bash_proflie -->~/.bashrc -->/etc/bashrc
非登陆式shell:读取路径为
~/.bashrc --> /etc/bashrc --> /etc/proflie.d/*.sh
文本处理工具:
Linux上文本处理三剑客:
grep:文本过滤工具(模式:pattern)工具;
sed:stream editor,流编辑器;文本编辑工具;
awk:Linux上的实现为gawk,文本报告生成器(格式化文本);
正则表达式:Regual Expression ,缩写为REGEXP
由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意思,而是用于表示控制或通配的功能;
分两类:
基本正则表达式:BRE
扩展正则表达式:ERE
元字符:\(hello[[:space:]]\=\)\+
grep: Global search REgular expression and print out the line.
作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配:答应匹配到的行:
模式:由正则表达式的元字符及文本字符所编写出的过滤条件:
正则表达式引擎:
grep [options] pattern [file...]
grep [options] [-e pattern | -f file] [file...]
options:
--color=auto:对匹配到的文本着色后高亮显示:
-i:ignorance,忽略字符的大小写
-o:仅显示匹配到的字符串本身
-v,--invert-match: 显示不能匹配到的行
-E:支持使用扩展的正则表达式元字符:
-q,--quiet,--sllent:静默模式,即不输出任何信息;
用echo $?查看匹配结果 0 表示匹配到 1表示匹配不到
-A#:after,显示匹配到的字符串的后#行
-B#:before,显示前#行
-C#:context,显示前后各#行
基本正则表达式元字符:
字符匹配:
.:匹配任意单个字符;相当于glob中的?表示匹配任意字符
[]:匹配指定范围内的任意单个字符;
[^]:匹配指定范围外的任意单个字符;
匹配次数:用再要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数;默认工作贪婪模式;
*:匹配其前面的字符任意次数;0,1,多次;
.*:匹配任意长度的任意字符
\?:匹配其前面的字符0次或1次;即其前面的字符是可有可无的
\+:匹配其前面的字符1次或多次;即其前面的字符要出现至少1次
\{m\}:匹配其前面的字符m次
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{0,n}:至多n次
\{m,\}:至少m次
位置锚定:
^:行首锚定;用于匹配模式的最左侧;
$:行尾锚定;用于匹配模式的最右侧
^PATTERN$:用于PATTERN来匹配整行
^$:空白行;
^[[:space:]]*$:空行或包含空白字符的行;
单词:非特殊字符组成的连续字符(字符串)都称为单词;
\<或\b:词首锚定,用于单词模式的左侧;
\>或\b:词尾锚定,用于单词模式的右侧;
\<PATTERN\>:匹配完整单词;