怎么理解“。” 在文件名扩展中?

Tim*_*Tim 0 bash

在 Bash 的手册中,对于文件名扩展:

当模式用于文件名扩展时,文件名.开头或斜杠后面的字符必须显式匹配,除非设置了 shell 选项 dotglob。

匹配文件名时,必须始终明确匹配斜杠字符。

在其他情况下,.字符不被特殊对待。

你能举一些例子来解释引用中的情况吗?

我应该如何区分.in 文件名扩展的用法与其无关的 hardlink 用法.

mur*_*uru 5

没有使用.文件名扩展。如果您使用文件名扩展,.通常会排除以 开头的文件名,除非您明确要求使用.*或 之类的内容.?/不是文件名中的有效字符,因此*不匹配/.

$ touch foo .foo; echo *; echo .*; echo ./*; echo; ./.*
foo
.foo
./foo
./.foo
Run Code Online (Sandbox Code Playgroud)

注意 how*./*exclude-.foo但是第一个echo命令没有使用 of .,第三个echo命令使用了./,所以通配符.用 a与 the 分开/。要匹配以 开头的文件名.,您必须明确指定前导.- .*, ./.*。但是,在这种情况下., 的角色与例如ain的角色没有什么不同a*

可以使用 禁用此异常shopt -s dotglob

由于.在文件名扩展中没有特殊用法,所以没有什么可区分的。文件名扩展中唯一的特殊字符是*, ?, [...]