我知道有一个which
命令会回显二进制文件的全名(例如which sh
)。但是,我相当确定有一个命令可以回显提供特定二进制文件的软件包。有这样的命令吗?如果是这样,那是什么?我希望能够运行以下命令:
commandName ls
并得到
coreutils
例如。
我知道有一个which
命令会回显二进制文件的全名(例如which sh
)。但是,我相当确定有一个命令可以回显提供特定二进制文件的软件包。有这样的命令吗?如果是这样,那是什么?我希望能够运行以下命令:
commandName ls
并得到
coreutils
例如。
Answers:
如果要在尚未安装的软件包中查找文件,请使用apt-file
apt-get install -y apt-file
apt-file update
然后,找到一些东西:
apt-file search /usr/bin/file
要么
apt-find search file
其中“文件”是您要搜索的名称。
如果您不想在每个Debian系统上都进行此操作,则可以使用以下脚本:
#!/bin/bash
which apt-get >/dev/null || { echo apt-get not found >&2; exit 1; }
which apt-file >/dev/null || { apt-get install -y apt-file; apt-file update; }
unset i; IFS=$'\x0a'; select i in $( apt-file search "/$@" ); do
test -n "$i" || break; apt-get install "${i%% *}"; done
那时我只是把它搅了一下,但似乎效果很好。
注意:“ dpkg -S”仅查找已经安装的内容。
-y
参数很危险,它可能对很多事情都说是。在脚本中可能没问题,但是第一个命令应该真正apt-get install apt-file
不带读取,-y
因为您不知道用户系统的外观。
dpkg -S `which COMMANDHERE`
为我工作。