3. 方括号 ([]) 字符

方括号 ([] ) 字符表示单个字符位置的一组或者一系列字符。

  • 一组字符是任意数量的特定字符,例如 [acb]。
    集合中的字符不必按任何顺序排列。
    例如,[abc] 与 [cab] 相同。

  • 字符范围是一系列有序字符。

  • 范围列出第一个字符,后跟连字符 (-),然后是最后一个字符,例如 [a-z] 或者 [0-9]。

  • 指定范围时,请按照我们希望它们在输出中出现的顺序排列字符。

  • 例如,使用 [A-Z] 或者 [a-z] 分别搜索任何大写或者小写字母字符。

例如,列出以字母 a 到 f 开头的所有文件和目录。

$ ls [a-f]*
brands    dante_1    file.1    file2    file4 
celery    feathers    file1    file.3   fruit 
dante    feathers_6    file.2    file3     fruit2

例如,列出所有以字母 f 或者 p 开头的文件和目录。

$ ls [fp]*
perm    file.1    file.2    file.3    file4    fruit2
feathers_6   file1    file2     file3     fruit

2. 问号 (?) 字符

问号 (?) 字符也称为通配符,表示隐藏文件的前导句点 (.) 之外的任何单个字符。
例如,列出以字符串 dir 开头并后跟另一个字符的所有文件和目录。

$ ls dir?
dir1:
coffees fruit trees
dir2:
beans notes recipes

如果没有文件与使用问号 (?) 字符的条目匹配,则会出现错误消息。

$ ls z?
z?: No such file or directory

shell 扩展

在 shell 中工作时,信息的集合或者范围经常重复。
Shell 扩展有助于使用紧凑语法生成大量 Shell 标记。
将命令拆分为令牌后,在命令行上执行扩展。
在许多可用的扩展中,路径名、文件名和大括号扩展在前面进行了解释。

大括号扩展

大括号 {} 扩展是一种可以生成任意字符串的机制。
要大括号扩展的模式采用可选前导码的形式,后跟一系列逗号分隔的字符串或者一对大括号之间的序列表达式,后跟可选的后记。
大括号内包含的每个字符串都以前导码“a”为前缀,然后将后缀“e”添加到每个结果字符串,从左到右扩展。

$ echo a{d,c,b}e
ade ace abe

路径名扩展

路径名扩展简化了目录层次结构中的位置更改。
路径名扩展包括:

  • 波浪号(~)字符,代表当前用户家目录的绝对路径名
  • 波浪号 (~) 字符和用户名,代表指定用户的主目录
  • 破折号 (-) 字符,代表上一个工作目录

注意:波浪号 (~) 字符在除 Bourne shell 之外的所有 shell 中都可用。

对于每个扩展字符,请考虑以下示例:

  1. 使用波浪号 (~) 字符将目录更改为 dir1.
$ cd ~/dir1
$ pwd 
/home/user/dir1/
  1. 使用波浪号 (~) 字符后跟用户名将目录更改为用户主目录。
$ cd ~user
$ pwd 
/home/user
  1. 使用 - 扩展字符在 user 和 tmp 目录之间切换。
$ cd
$ pwd
/home/user
$ cd /tmp
$ pwd
/tmp
$ cd 
/export/home/user1
$ cd 
/tmp

文件名扩展

文件名扩展是:

  • 星号 (*) 字符
  • 问号 (?) 字符
  • 方括号 ([]) 字符
on  it road.com

1. 星号 (*) 字符

星号 (*) 扩展字符也称为通配符,代表零个或者多个字符,隐藏文件的前导句点 (.) 除外。
例如,列出所有以字母 f 开头、后跟零个或者多个其他字符的文件和目录。

$ ls f*
file.1 file.2 file.3 file4

另一个例子是列出所有以数字 3 结尾的文件和目录,前面有零个或者多个字符。

$ ls *3
file.3 file3
Linux下如何使用shell扩展生成shell令牌
日期:2020-09-17 00:13:58 来源:oir作者:oir