在*
这里是一个“通配字符”和手段“匹配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 次 |
最近记录: |