1 shell 基础
1.1 shell 脚本必须的格式如下:
#!/bin/bash /这一行是必须的
echo -e "'\e[1;34m hello world \e[0m"
控制字符 | 作用 |
---|
\a | 输出警告音 |
\b | 退格键 也就是向左删除键 |
\n | 换行符 |
\r | 回车键 |
\t | 制表符, 也就是tab键 |
\v | 垂直制表符 |
示例:
echo -e "\e[1;31m hello worlk \e[0m"
意思即为红色输出结果, 其中: \e[1;31m \e[0m
是格式
31m
= 红色
1.2 脚本执行:
- 赋予执行权限, 直接运行
chmod 755 hello.sh
./hello.sh
- 通过bash调用执行脚本
1.3 bash的基本功能
- 别名与快捷键
alias
查看系统中的别名alias 别名 = '原命令'
设定别名~/.bashrc
写入环境变量配置文件,使别名永久生效unalias 别名
删除别名
- 历史命令
history [选项] [历史命令保存文件]
-c
清空历史命令-w
把缓存中的历史命令写入历史命令保存文件~/.bash_history
- 历史命令默认为会保存1000条, 可以在环境变量配置文件
etc/profile
中修改 !n
重复执行第n条历史命令!!
重复执行上一条命令!字符串
重复执行最后一条以该字串开头的命令
1.4 输入输出重定向
设备 | 设备文件名 | 文件描述符 | 类型 |
---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stdierr | 2 | 标准错误输出 |
类型 | 符号 | 用途 |
---|
标准输出重定向 | 命令 > 文件(大于号后面有空格) | 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中 |
标准输出重定向 | 命令 >> 文件(大于号后面有空格) | 以追加的方式, 把命令的正确输出输出到指定的文件或设备当中 |
标准错误输出重定向 | 错误命令 2>文件(大于号后面没有空格) | 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中 |
标准错误输出重定向 | 错误命令 2>>文件(大于号后面没有空格) | 以追加的方式, 把命令的错误输出输出到指定的文件或设备当中 |
正确输出和错误输出同时保存 | 命令 > 文件 2>&1 | 覆盖方式, 正确和错误都保存到同一个文件当中 |
– | 命令 >> 文件 2>&1 | 追加方式,正确和错误都保存到同一个文件当中 |
– | 命令 &>文件(推荐) | 覆盖方式,正确和错误都保存到同一个文件当中 |
– | 命令 &>>文件 (推荐) | 追加方式,正确和错误都保存到同一个文件当中 |
– | 命令 >> 文件1 2>>文件2 | 把正确的输出追加到文件1中,把错误的输出追加到文件2中 |
1.4.1 多命令顺序执行
多命令执行符 | 格式 | 用途 |
---|
; | 命令1; 命令2 | 多个命令顺序执行, 命令之间没有任何逻辑联系 |
&& | 命令1&&命令2 | 逻辑与, 当命令1正确执行, 命令2才会执行, 当命令1执行不正确, 则命令2不会执行 |
|| | 命令1|| 命令2 | 逻辑或, 当命令1执行不正确, 则命令2才会执行, 当命令1正确执行, 则命令2不会执行. |
| | 命令1| 命令2 | 管道符, 命令1的正确输出作为命令2的操作对象, 所以命令2要保证可以处理命令1的结果才能正确执行 |
命令示例
命令 && echo yes || echo no
来判断命令是否正确执行
1.4.2 管道符示例
- `ls -h | more` 分屏展示
- `netstat -an | grep ESTABLISHED` 查找`ESTABLISHED`关键字的网络状态
- `netstat -an | grep ESTABLISHED | wc -l` 查找`ESTABLISHED`关键字的网络状态的行数
1.4.3 特殊符号
符号 | 作用 |
---|
‘’ | 单引号, 在单引号中所有的特殊符号, 如"$“和”`"(反引号)都没有特殊含义 |
“” | 双引号, 在双引号中特殊符号都没有特殊含义, 但是"$", "`“和”“是例外, 拥有"调用变量的值”, "引用命令"和"转义符"的特殊含义 |
`` | 反引号.反引号括起来的内容是系统命令, 在bash中会先执行它.和
(
)
作
用
一
样
,
不
过
推
荐
使
用
()作用一样, 不过推荐使用
()作用一样,不过推荐使用(), 因为反引号非常容易看错. |
$() | 和反引号作用一样, 用来引用系统命令 |
# | 表示注释 |
$ | 用于调用变量的值, 如需要调用path的值时, 使用$path的方式得到变量的值 |
\ | 转义符 |