“dpkg -l”接收 shell 通配符?

“dpkg -l”接收 shell 通配符?

在 bash shell 中,如果我执行 ,则启用了通配符ls -l *ou*,然后 shell 应该将out.dotout.png作为参数传递给ls,即ls永远不会看到该*字符。但是,看起来在实际收到(通配符)字符的dpkg -l *bridge*情况dpkg*

root@host-machine:~# ls -l *ou*
-rw-r--r-- 1 root root   8985 Jan 21 11:58 out.dot
-rw-r--r-- 1 root root 892260 Jan 21 11:58 out.png
root@host-machine:~# dpkg -l *bridge*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                                          Version                             Architecture                        Description
+++-=============================================================-===================================-===================================-================================================================================================================================
ii  bridge-utils                                                  1.5-6                               amd64                               Utilities for configuring the Linux Ethernet bridge
un  cli-uno-bridge                                                <none>                                                                  (no description available)
ii  libatk-bridge2.0-0:amd64                                      2.5.3-2                             amd64                               AT-SPI 2 toolkit bridge - shared library
root@host-machine:~# 

或者如何解释这种行为?

答案1

如果没有任何内容与您指定的模式 ( *ou*) 匹配,则该模式将以未扩展的方式传递给命令:

$ echo *ou*
*ou*

答案2

如果没有文件匹配,通配符将保持原样。如果你试试:

dpkg -l *ou*

你应该得到:

dpkg-query: no packages found matching out.dot
dpkg-query: no packages found matching out.png

使用

dpkg -l \*ou\*

或者

dpkg -l '*ou*'

相关内容