对“树”找不到文件感到困惑

对“树”找不到文件感到困惑

为什么最后一个没有找到系统表

tree /etc -P fstab --prune
/etc
└── fstab    
0 directories, 1 file

tree /etc -P fsta* --prune
/etc
└── fstab
0 directories, 1 file    

tree /etc -P *stab --prune
/etc
└── fstab    
0 directories, 1 file

这里发生了什么? 根据我的理解应该找到至少 fstab

tree /etc -P *sta* --prune   
/etc
0 directories, 0 files

答案1

当您在命令行上使用不带引号的通配模式时,shell 会尝试将其与文件名进行匹配。如果没有文件名与模式匹配,大多数 shell 将保留未展开的模式(zsh默认情况下会抱怨,就像bash一样set -u)。

显然,您有一些名称匹配 的文件*sta*,但不匹配fsta**stab。 shell 扩展*sta*为该文件的名称,这意味着该模式不再fstab/etc.

解决方案是在模式周围使用单引号或双引号(并让其tree在内部进行自己的模式匹配)。

相关内容