在*这里是一个“通配字符”和手段“匹配0个或多个字符”。为了说明,考虑这个目录:
$ ls
dirA dire dirE dirEa dirEEE
$ echo dirE*
dirE dirEa dirEEE
Run Code Online (Sandbox Code Playgroud)
正如你可以在上面看到,水珠dirE*匹配dirE,dirEa和dirEEE而不是dirA或dire(* nix系统是区分大小写)。
因此,在您的脚本中,这意味着它将从dirA/dirB/dirC/dirD/名称以dirE.
我只是在这里为那些出于另一个原因参加此问答的人添加注释。
如果您*在ls(实际上是 of 的ls -F,但ls有时别名为ls -F(或ls-F内置的tcsh) 或 ofzsh或tcsh完成的输出中的文件名末尾看到 a ,那是完全不同的东西。
使用该-F选项,ls在某些特殊文件名的末尾添加一个尾随字符以帮助识别它们的特殊性。zsh并tcsh在列出文件名完成时执行相同的操作。
如果你看到:
$ ls -F
dir/ fifo| file link@ ls* socket=
Run Code Online (Sandbox Code Playgroud)
那些/, |,*和=不是文件名的一部分(尽管如果有人试图欺骗您,它们可能是),但附加ls在 告诉您:
dir是一个目录 ( /)fifo是一个命名管道/fifo ( |)link是符号链接 ( @)ls是一个可执行的常规文件 ( *)(其权限中至少有一个执行位)socket是 Unix 域套接字 ( =)一些ls实现(和zsh的完成)也可以通过终端的颜色来区分,这些终端支持不同的选项。
| 归档时间: |
|
| 查看次数: |
1400 次 |
| 最近记录: |