grep [optinos] "pattern" file... 基本: 字符匹配:.,[][^] 次数匹配:,?,{m},{m,n} 位置锚定:<,\b,>,^,$ 分组:() 前向引用:\1,\2 扩展: 字符匹配:.,[][^] 次数匹配:,?,{m},{m,n},+ 位置锚定:<,\b,>,^,$ 分组:() 前向引用:\1,\2 或a|b 条件判断 if condition;then statement1 .... fi if condition;then 分支1; else 分支2; fi if condition;then 分支1; elif condition;then 分支2; ... else 分支n; fi 条件测试: bash :每个命令,执行状态都有返回值 • 成功:0 • 失败:非0 $?:echo $?脚本的状态返回值,脚本执行的最后一条命令; exit [n]:自定义脚本状态返回值 command,$(command):引用命令的执行结果 • 引用命令执行成功与否的状态结果:一定是直接执行命令。此时,通常需要将执行结果重定向至/dev/null 条件测试: test 测试表达式 [ 测试表达式 ] [[ ]]:bash中的关键字 bash的知识点: 组合条件测试:对条件做逻辑运算 与:条件1 && 条件2,隐藏条件,如果条件1为真,则执行条件2; 条件1为假,则最终结果一定为假,否则,条件2不予执行 条件1为真,则最终条件结果决于后面条件,因此,条件2必须执行 或:条件1 || 条件2,隐藏条件,如果条件1为假,则执行条件2; 条件1为真,则最终结果一定为真,否则,条件2不予执行 条件1为假,则最终条件结果决于后面条件,因此,条件2必须执行 非: ! 条件;
与的优先级大于或,或的优先级大于非 bash编程之:字符测试,一般加引号
双目: > : 大于 < :小于 ==:等于,等值比较 =~:左侧是字符串,右侧是一个模式,判断左侧的字符串能否被右侧的模式所匹配:通常只在[[]]中使用 模式中可以使用行首、行尾锚定符,但是模式不要加引号 判定字符串是否满足需求 !=, <>: 不等于 单目: -n 字符串: 字符串是否不空,不空为真,空则为假 -z 字符串:字符串是否为空,空则为真,不空则假:

[ "stringA" == "stringB" ] 变量带引号,若变量为null,则不带引号会报错;

read -p "please input usename :" username if ! grep ^$username/> /etc/passwd &> /dev/null;then exit 7 elif [[ grep ^$username/> /etc/passwd |cut -d:-f7 =~ /bin/shell ]];then echo "bash user" exit 0 else echo "not bash user" exit 1 vi 编辑器 Linux:使用文本文件来保存配置文件 文本编辑器:ASCII文件 emacs vi vi:Visual Interface 全屏文本编辑,nano 模式化的编辑器 moduler
vim :vi improved vi的模式: 编辑模式:键盘操作通常被解析为编辑命令: 输入模式: 末行模式:vim的内置的命令行接口,执行vim内置命令 编辑模式-->输入模式 i:当前光标处输入内容 I:在当前光标所在行的行首 a:在当前光标所在处的后面 A:在当前光标所在行的行尾输入 o:在光标所在行的下方新增一行空白行 O:在光标所在行的上方新增一行空白行

输入模式-->编辑模式
ESC