!["dpkg -l"은 쉘 와일드카드를 허용합니까?](https://linux55.com/image/46815/%22dpkg%20-l%22%EC%9D%80%20%EC%89%98%20%EC%99%80%EC%9D%BC%EB%93%9C%EC%B9%B4%EB%93%9C%EB%A5%BC%20%ED%97%88%EC%9A%A9%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
Bash 쉘에서 실행하면 와일드카드가 활성화되고 ls -l *ou*
쉘은 out.dot
및 인수로 out.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*'