系统
系统是把相互作用相互依赖的硬件组件组成具有协调特定功能的有机整体
内核
负责硬件组件的管理
shell
shell就是一个用C语言编写的程序,提供一个界面给用户跟内核进行沟通(命令解释器程序)
bash和sh
解释器的分类,默认为bash,bash为sh的超集
echo
用于字符串的输出
- -e 支持控制字符
- -n 输出不换行
常见控制字符
\\ 输出 \
\c 取消换行,同-n一致
\t 制表符,tab健用处
\n 换行符
\f 换页符
三种符号
- 双冒号:" " 用于把字符变成一个整体,包含有系统意义符号
- 单引号:’ ’ 2种使用功能
- 用于把字符变成一个整体
- 输出字符原样,比如$变量符、系统命令
- 反引号:`` 键盘1的左边,用于输出命令结果
输出保存到文件
- echo " " >> 文件,把输出内容追加到文件里
- echo " " > 文件,把输出内容覆盖到文件里
脚本执行
- 文件执行(会创建子shell执行脚本)
- 基于绝对目录,文件需要授权执行权限x
- bash或sh命令调用执行(会创建子shell执行脚本)
- source在本shell下生效(不会创建子shell执行脚本)
- 点符号 . 同样功能(区别 ./ )
子shell执行:只是获取到完成脚本的结果
本shell执行:需要使用脚本内部定义
pstree命令可以看到进程树状图
多命令执行
- 命令 ; 命令 :命令全部执行,不管命令是否报错(命令之间没有逻辑关系)
- 命令 && 命令 : 只有第一个命令成功执行,后面命令才执行,第一个命令失败,后面的命令不执行(结果与的关系)
- 命令 || 命令:与&&正好相反
特殊使用(可以实现简单if判断)
ls && echo yes || echo no
#前面执行了输出yes,前面没执行输出no
机器怎么识别正确还是错误
echo $? 返回0代表成功,其他数值代表失败
通配符
匹配处理文件名,区别正则(正则是针对字符串处理)
- ? 匹配一个任意字符
- * 匹配0或任意个字符,代表所有
- [-] 匹配范围字符,-代表一个范围 0-9,匹配一个字符
- [^] 匹配非包含的字符,匹配一个字符
除了*号,其他都是匹配一个字符
bash特殊符号
- $ 调用变量(定义变量不需要加$)
- $() 运行命令与反引号一样的作用,变量赋值
- () 小括号:在子shell中运行命令
- {}大括号:在父shell中运行命令
- #注释
- \ 转义符,把原本有含义的符号变成普通字符