Linux Shell 命令行:文件名补全
通配符扩展 也就是文件路径名展开,学习文件通配符扩展,先了解一下 通配符 。
文件名匹配字符串中含有 '***' ,'?' ,'[**' 字符,意味着按照文件名或文本文件中含指定字符串方式查找文件时,查找到的结果,可能包含多个文件。外壳程序的通配符机制用于文件名的匹配。
通配符扩展 是外壳程序识别通配符模型并展开它,以匹配符合模型的文件的操作。
星号(*****)
星号(*****)在生成匹配文件名时解释为一种标记。常放在字符串尾,表示与前面组合匹配 任意数量任意字符 。
举例:
$ ls office*
问号(?)
你也可使用问号(?)做为标记生成匹配文件名。表示匹配 仅一个任意字符 ,下面是放在行尾的例子。
举例:
$ ls office?
方括号([] )
方括号([])也用于生成匹配文件名标记。[] 中放置的是一个字符序列,匹配时,并不是匹配整个字符序列,只是匹配字符序列中的某单个字符。(译注:可认为是逻辑或机制的单字符匹配)。
举例:
$ ls office[A2]
方括号中的排除符(!)
感叹号('!')用于在方括号通配符中表示排除,反意的含义,表示方括号中 ! 后的字符排除匹配。
可以组合以上 星号 ***** ,问号 ? ,方括号 [] 做为通配符匹配文件名。
举例:
ls office[A2][!3]
表示范围 [a-z] 和 [0-9]#
你也可按照需要在方括号中指示范围。
举例:
$ ls office[a-z]
防止通配符匹配
‘**echo ***’ 命令,若当前目录为空时,显示 ***** 。但若当前目录不空时,命令显示当前目录下的文件。为了阻止 *****表示通配符的功能,可以使用转义符 ** ,单引号 ' 或双引号 ' 使 ***** 表示其字面量。
语法:
echo \*
echo '*'
echo "*"