当找不到二进制文件时执行“apt install package”命令

当找不到二进制文件时执行“apt install package”命令
$ xelatex

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

sudo apt install texlive-xetex

如果未找到二进制文件但apt知道与之关联的包,它会推荐安装命令。

当推荐提示时,是否有一个简单的快捷方式或命令,instllaptrecommend以便我可以跳过复制/粘贴直接执行安装命令?

答案1

通常您必须手动运行所需的安装命令。请求的功能不存在。有关线索,请参阅主源代码command-not-foundpython 脚本和文件列表command-not-found包裹

我们可以发明一些 hack,例如下面两个函数

install_cnf_apt() { $1 2>&1 | grep -E "(apt|apt-get).*install" | tail -n1 | sh -x; }
install_cnf_snap() { $1 2>&1 | grep "snap install" | tail -n1 | sh -x; }

并将它们添加到~/.bashrc稍后。它们将按如下所示工作:

$ htop

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

sudo snap install htop  # version 3.0.5, or
sudo apt  install htop

See 'snap info htop' for additional versions.
$ install_cnf_apt htop
+ sudo apt install htop
...
Unpacking htop (2.1.0-3) ...
Setting up htop (2.1.0-3) ...
...

或者

$ install_cnf_snap htop
+ sudo snap install htop
htop 3.0.5 from Maximiliano Bertacchini (maxiberta) installed

答案2

我想出了一个简短的版本

function rui() { $1 2>&1 | bash;}

运行安装的缩写

使用:

rui xelatex

但是,这仅在您知道程序未安装时才有用。如果程序已安装,则不应运行它。并且它无法处理多个建议。它将简单地运行所有建议...

正如@N0rbert所提到的,您可以添加此类功能以/home/username/.bash_aliases 使它们持久存在

通过这一行,您可以使其持久并立即可供使用:

echo "function rui() { \$1 2>&1 | bash;}" >> /home/$USER/.bash_aliases && source ~/.bashrc

相关内容