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 "*"
见如上截图所示,当 「Download」目录为空时,’echo *' 命令显示 * ,但当目录下包含文件时,要想显示 * ,可使用如上方法。
推荐文章: