Joe*_*Joe 0 linux bash yum wildcard rhel6
今天遇到了一些奇怪的行为。想知道这里是否有人可以告诉我什么是不同的行为。环境是 RHEL 6.7 服务器。
我运行以下命令:
yum list installed *mysql*
如果我的 cwd 是 / 或其他一些地方,我会得到以下输出:
Installed Packages
MySQL-client-advanced.x86_64 5.6.27-1.el6 @/MySQL-client-advanced-5.6.27-1.el6.x86_64
MySQL-server-advanced.x86_64 5.6.27-1.el6 @/MySQL-server-advanced-5.6.27-1.el6.x86_64
MySQL-shared-advanced.x86_64 5.6.27-1.el6 @/MySQL-shared-advanced-5.6.27-1.el6.x86_64
MySQL-shared-compat-advanced.x86_64 5.6.27-1.el6 @/MySQL-shared-compat-advanced-5.6.27-1.el6.x86_64
在其他几个文件夹(包括此服务器上的 /opt)中,我运行相同的命令并获得以下输出:
Error: No matching Packages to list
现在我知道我通常需要在这个命令中转义通配符。如果我运行它:
yum list installed \*mysql\*
然后我在两个位置都得到了正确的输出。我认为这是因为 bash globs 通配符的方式。我现在真正想知道的是为什么它把它放在一个文件夹中,但不在另一个文件夹中。我都以 root 身份运行,printenv 显示相同的输出(PWD 除外),实际上,两次运行命令之间唯一变化的是cd /opt
谁能告诉我为什么会发生这种情况,或者要查看哪些内容以了解为什么会有所不同?TIA
这是因为*mysql*
通配符的结果取决于您所在目录的内容。您的 shell 通过尝试将 * 字符与目录中的文件名匹配来解释 * 字符(除非您对其进行转义或将其隐藏在引号中)。
为了说明,执行(在每个有问题的目录中)
echo yum list installed '*mysql*'
echo yum list installed *mysql*
ls -ld *mysql*
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37 次 |
最近记录: |