bash 语法备忘
bash 语法作为程序员好像都了解一些,但又缺少体系化学习,需要使用到某些功能时又经常手忙脚乱地查。
本文主要参考阮一峰的bash教程,对bash的知识点进行了梳理。
本文目的是作为bash的语法备忘录、语法速查表。
模式扩展
模式扩展(globbing),类似C语言中的宏展开,我们通常使用的通配符*就是其中之一。
Bash 一共提供八种扩展,前4种为文件扩展,只有文件路径确实存在才会扩展。
~波浪线扩展?问号扩展*星号扩展[]方括号扩展{}大括号扩展$var变量扩展$(date)命令扩展$((1 + 1))算术扩展
波浪线扩展
波浪线~会自动扩展成当前用户的主目录。~user表示扩展成用户user的主目录。如果用户不存在,则波浪号扩展不起作用。
1 | bash-5.1$ echo ~/projects/ |
问号扩展
?字符代表文件路径里面的任意单个字符,不包括空字符。
只有文件确实存在的前提下,才会发生扩展。
1 | bash-5.1$ touch {a,b}.txt ab.txt |
星号扩展
*字符代表文件路径里面的任意数量的任意字符,包括零个字符。
1 | bash-5.1$ ls *.txt |
方括号扩展
方括号扩展的形式是[...],只有文件确实存在的前提下才会扩展。
[^...]和[!...]。它们表示匹配不在方括号里面的字符
方括号扩展有一个简写形式[start-end],表示匹配一个连续的范围
1 | bash-5.1$ ls [ab].txt |
大括号扩展
大括号扩展{...}表示分别扩展成大括号里面的所有值
大括号也可以与其他模式联用,并且总是先于其他模式进行扩展。...
剩余内容已隐藏