Ubuntu如何搜索命令所对应的二进制包?

博文背景

如果一个命令在本地不存在,那么该知道它的归属并安装它的二进制包?

具体操作

在Ubuntu下默认应该是会有command-not-found的功能的,如果没有这个功能就用apt安装一下这个工具再exec bash,这个工具能够在命令不存在时给你推荐该安装哪个二进制包,我记得有些精简版的Ubuntu系统比如docker还有lxc应该是没有安装这个玩意的需要手动安装一下,debian和kali默认应该也不具备这个功能,需要手动安装。

但是这个command-not-found用的本质又是apt里面的什么呢?本着溯源的精神我又探究了一波,读者应该使用sudo apt install apt-file来安装apt-file然后update源,这样就可以使用这个来搜索想要的命令,但是一般情况下的搜索会很难找到你想要的东西因为不是根据命令精准匹配,这时候需要一定的搜索技巧,比如搜索java和ping,一般情况下直接执行的命令都是在PATH里面的某个bin目录下,所以我们搜索时带上bin目录,但是搜索java可能会出现javac搜索ping可能会出现ping6之类的造成干扰,这时候就需要使用grep来过滤了以java结尾就可以了,搜索出来的结果基本和command-not-found给出的结果应该是一致的,下面给出两个示范:

(base) ubuntu@debian:~$ java

Command 'java' not found, but can be installed with:

sudo apt install default-jre            
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless 

(base) ubuntu@debian:~$ apt-file search /bin/java | grep /bin/java$
openjdk-11-jre-headless: /usr/lib/jvm/java-11-openjdk-amd64/bin/java
openjdk-8-jre-headless: /usr/lib/jvm/java-8-openjdk-amd64/bin/java
openjdk-8-jre-headless: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

这里的转义字符可能要注意具体我没仔细研究还有个叫apt-cache的东西可能也可以搜索有兴趣的读者自己尝试一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值