执行命令前,bash shell会对命令行进行一些替换。
bash中的命令行替换
替换 | 语法 | 含义 |
历史 (history) | ! | 前一个命令行 |
大括号 (brace) | {} | 指定的文本 |
代字号 (tilde) | ~username | 用户的主目录 |
变量 | $,${...} | Shell 和环境变量 |
算术 (arithmetic) | $((...)) | 算术运算 |
命令替换 | `...` , $(...) | 运行在子 shell 中的命令的输出 |
路径名 | *,?,[...],[^...] | 文件系统中匹配的文件名 |
1、大括号替换
用于把一个单词展开为多个单词,一次一个,循环替换“大括号中”的元素。
2、代字号替换
用于把~或~username替换为用户或username的主目录。
3、变量替换
用于把$VARNAME或${VARNAME}格式的表达式替换为shell变量或环境变量VARNAME的值。
4、算术替换
用于对括在$((...))中的文本进行特殊处理。只支持整数运算。
5、命令替换
老式语法`subcommand`
新式语法 $(subcommand)
6、路径名替换
- * 0或更多的字符
- ? 一个字符
- [...] 括号中的字符之一
- [^...] 任何一个不在[...]里的字符
引用和转义字符
- / 避免下一个字符被shell解释
- "..." 避免双引号内除了$、!和 `(反引号) 字符以外的其他字符被shell解释
- '...' 避免单引号内的字符被shell解释