——来自《鸟哥的Linux私房菜》shell
在 bash 的操做环境中还有一个很是有用的功能,那就是通配符 (wildcard) ! 咱们利用 bash 处理数据就更方便了!底下列出一些经常使用的通配符:bash
符号 | 意义 |
* | 表明『 0 个到无穷多个』任意字符 |
? | 表明『必定有一个』任意字符 |
[ ] | 一样表明『必定有一个在括号内』的字符(非任意字符)。例如 [abcd] 表明『必定有一个字符, 多是 a, b, c, d 这四个任何一个』 |
[ - ] | 如有减号在中括号内时,表明『在编码顺序内的全部字符』。例如 [0-9] 表明 0 到 9 之间的全部数字,由于数字的语系编码是连续的! |
[^ ] | 若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 表明 必定有一个字符,只要是非 a, b, c 的其余字符就接受的意思。 |
接下来利用通配符配合 ls 找檔名看看:编码
范例一:找出 /etc/ 底下以 cron 为开头的档名 ll -d /etc/cron* <==加上 -d 是为了仅显示目录而已 范例二:找出 /etc/ 底下文件名『恰好是五个字母』的文件名 ll -d /etc/????? <==因为 ? 必定有一个,因此五个 ? 就对了 范例三:找出 /etc/ 底下文件名含有数字的文件名 ll -d /etc/*[0-9]* <==记得中括号左右两边均需 * 范例四:找出 /etc/ 底下,档名开头非为小写字母的文件名: ll -d /etc/[^a-z]* <==注意中括号左边没有 * 范例五:将范例四找到的文件复制到 /tmp 中 cp -a /etc/[^a-z]* /tmp |
除了通配符以外,bash 环境中还有如下特殊符号:spa
符号 | 内容 |
# | 批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不运行 |
\ | 跳脱符号:将『特殊字符或通配符』还原成通常字符 |
| | 管线 (pipe):分隔两个管线命令的界定(后两节介绍); |
; | 连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同) |
~ | 用户的家目录 |
$ | 取用变量前导符:亦便是变量以前须要加的变量取代值 |
& | 工做控制 (job control):将命令变成背景下工做 |
! | 逻辑运算意义上的『非』 not 的意思! |
/ | 目录符号:路径分隔的符号 |
>, >> | 数据流重导向:输出导向,分别是『取代』与『累加』 |
<, << | 数据流重导向:输入导向 (这两个留待下节介绍) |
' ' | 单引号,不具备变量置换的功能 |
" " | 具备变量置换的功能! |
` ` | 两个『 ` 』中间为能够先运行的命令,亦可以使用 $( ) |
( ) | 在中间为子 shell 的起始与结束 |
{ } | 在中间为命令区块的组合! |
以上为 bash 环境中常见的特殊符号汇整!理论上,你的『档名』尽可能不要使用到上述的字符啦!ip