为什么最后一棵树没有找到fstab?
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
当您在命令行上使用不带引号的 globbing 模式时,shell 将尝试将其与文件名匹配。如果没有文件名与模式匹配,大多数 shell 将保留未扩展的模式(
zsh
默认情况下会抱怨,就像bash
使用一样set -u
)。您显然有一些名称匹配的文件
*sta*
,但不匹配fsta*
or*stab
。shell 扩展为该文件的名称,*sta*
这意味着该模式不再匹配fstab
./etc
解决方案是在模式周围使用单引号或双引号(并
tree
在内部进行自己的模式匹配)。