为什么最后一个树没有找到系统表?
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
在内部进行自己的模式匹配)。