- 输出当前使用 shell:
echo $SHELL/bin/bash
- 输出支持的 shell:
cat /etc/shells
脚本执行方式输出命令: echo
echo [选项] [输出内容]
选项:
-e: 支持反斜线控制的字符转换, 比如\n
所有的 Linux 命令都可以在 shell 中执行;
脚本执行
赋予执行权限, 直接运行
chmod 755 hello.sh./hello.sh
通过
bash调用执行脚本bash hello.sh
常用快捷键
ctrl + c 强制终止当前命令
ctrl + l 清屏
ctrl + a 光标移动到命令行首
ctrl + e 光标移动到命令行尾
ctrl + u 从光标所在未知删除到行首
ctrl + z 把当前执行命令放入后台
ctrl + r 在历史命令中搜索
历史命令
history [选项] [历史命令保存文件]
选项:
-c: 清空历史命令-w: 把缓存中的历史命令写入历史命令保存文件~.bash_history
输出, 输入重定向标准输入输出:
| 设备 | 设备文件名 | 文件描述符 | 类型 |
|---|---|---|---|
| 键盘 | /dev/stdin | 0 | 标准输入 |
| 显示器 | /dev/sdtout | 1 | 标准输出 |
| 显示器 | /dev/sdterr | 2 | 标准错误输出 |
标准输出重定向:
命令 > 文件: 以覆盖的方式, 把命令的正确输出输出到指定的文件或设备中命令 >> 文件: 以追加的方式, 把命令的正确输出输出到指定的文件或设备中错误命令 2>文件: 覆盖, 把错误输出输出到指定的文件或设备中错误命令 2>>文件: 追加注意错误追加
>>左右两侧没有空格
正确输出和错误输出同时保存:
命令 > 文件 2>&1以覆盖的方式, 把正确输出和错误输出都保存到同一文件中命令 >> 文件 2>&1追加命令 &>文件覆盖 正确与错误输出都保存到同一文件命令 &>>文件追加命令>>文件一 2>>文件二__: 把正确的输出追加到文件一, 错误的追加到文件二
输入重定向
wc [选项] [文件名]
选项:
-c: 统计字节数-w: 统计单词数-l: 统计行数
多命令顺序执行
| 多命令执行符 | 格式 | 作用 |
|---|---|---|
| ; | 命令1; 命令2 | 多个命令顺序执行, 命令之间没有任何逻辑关系 |
| && | 命令1&&命令2 | 逻辑与 当命令1正确执行, 则命令2才会执行 当命令1执行不正确, 则命令2不会执行 |
| || | 命令1 || 命令2 | 逻辑或 当命令1执行不正确, 则命令2才会执行,当命令1正确执行, 则命令2不会执行 |
管道符
命令1 | 命令2
命令 1 的正确输出作为命令 2 的操作对象
- 例如, 查询建立连接的端口数量
netstat -an | grep ESTABLISHED | wc -l
通配符
| 通配符 | 作用 |
|---|---|
? |
匹配一个任意字符 |
* |
匹配 0 各或多个任意字符, 也就是可以匹配任何内容 |
[] |
匹配中括号中任意一个字符. 例如: [abc]代表匹配 a, 或 b, 或 c |
[-] |
匹配中括号中任意一个字符, -代表一个范围. 例如: [a-z]代表匹配一个小写字母 |
[^] |
逻辑非, 表示匹配不是中括号内的一个字符. 例如: [^0-9]代表匹配一个不是数字的字符 |
Bash 中其他特殊符号
| 符号 | 作用 |
|---|---|
'' |
单引号, 在单引号中所有的特殊符号, 如 $ 和 ` 都没有特殊含义 |
“" |
双引号, 在双引号中特殊符号都没有特殊含义, 但是 $ 和` 是例外, 拥有 调用变量的值, 引用命令, 和 转义字符 含义. |
| `` | 反引号, 反引号括起来的内容是系统命令, 在 bash 中会先执行它. 和 $() 作用一样, 不过推荐使用$(), 因为反引号非常容易看错 |
$() |
和反引号一样, 用来引用系统命令 |
# |
在Shell脚本中, #开头的行代表注释 |
$ |
用于调用变量的值, 如需要调用变量name的值时, 需要用$name的方式得到变量的值 |
\ |
转义符, 跟在\之后的特殊符号将失去特殊含义, 变为普通字符. 如\$将输出$字符. |
