![如何查找与包关联的命令?](https://linux22.com/image/118583/%E5%A6%82%E4%BD%95%E6%9F%A5%E6%89%BE%E4%B8%8E%E5%8C%85%E5%85%B3%E8%81%94%E7%9A%84%E5%91%BD%E4%BB%A4%EF%BC%9F%20.png)
有时我发现自己安装了一个软件包,然后尝试使用相同的名称运行命令,喜欢与geoip-bin
包裹:
$ sudo apt install geoip-bin
[...]
$ geoip-bin
geoip-bin: command not found
如何找到与给定包关联的所有命令?
答案1
dpkg -L
-L, --listfiles package-name
列出安装到您的系统的文件包裹名字。
两种选择:
- 通常只起作用:(
dpkg -L byobu | egrep '/bin/|/sbin/'
或者即使grep bin
你不介意得到一些误报)。 或者
dpkg -L byobu | xargs which
或者与一些 bash 魔法:
for f in $(dpkg -L geoip-bin) ; do test -x $f -a ! -d $f && echo $f ; done
您可以选择
| grep "/usr/bin/"
在末尾添加以列出该特定文件夹上的可执行文件。
geoiplookup
是 的命令geoip-bin
。我还发现这对于了解任何包的其他命令非常有用。
答案2
您可以使用命令dpkg
:
dpkg -S $(which <command>)
例如:
$ dpkg -S $(which cp)
coreutils: /bin/cp
该命令cp
是包的一部分coreutils
。
要查看与coreutils
包关联的所有命令:
$dpkg -s coreutils
Specifically, this package includes:
arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp
csplit cut date dd df dir dircolors dirname du echo env expand expr
factor false flock fmt fold groups head hostid id install join link ln
logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc numfmt
od paste pathchk pinky pr printenv printf ptx pwd readlink realpath rm
rmdir runcon sha*sum seq shred sleep sort split stat stty sum sync tac
tail tee test timeout touch tr true truncate tsort tty uname unexpand
uniq unlink users vdir wc who whoami yes