那么,当找不到命令时,通过什么方式填充“您的意思是:”列表?什么程序可以找到这些替代命令? “(主要),(宇宙)......”是什么意思?我可以更改哪个程序找到这些吗?
答案1
对于bash
,其行为由 shell 函数控制command_not_found_handle
(请参阅man bash
)。
要查看该函数定义了哪些行为,您可以发出:
declare -p -f command_not_found_handle
您可以通过重新定义函数来更改使用哪个程序command_not_found_handle
。
在基于 Debian 的发行版(包括 Ubuntu)中,包裹command-not-found
通常已安装,并可/usr/lib/command-not-found
从以下链接获取:
建议在交互式 bash 会话中安装软件包
该软件包将安装 command_not_found 的处理程序,该处理程序查找当前未安装但可从存储库获取的程序。
也可以看看:
man
页面bash
,特别是命令执行/usr/share/doc/command-not-found/README
(来自 Debian 软件包)- https://wiki.ubuntu.com/CommandNotFoundMagic
答案2
如果你看一下/etc/apt/sources.list
它的内容就会有这样的格式
#Archive type Repository URL Distribution Component
deb http://archive.ubuntu.com/ubuntu precise main
档案类型
每行的第一个单词 deb 或 deb-src 表示存档的类型。 Deb表示归档文件包含二进制包(deb),等等。
存储库网址
该行的下一个条目是您要从中下载包的存储库的 URL。
分配
“分布”可以分别是发布代号/别名(wheezy、jessie、stretch、sid)或发布类别(oldstable、stable、testing、unstable)。
“(主要),(宇宙)......”是什么意思?
成分
main 由符合 DFSG 的软件包组成,contrib 软件包包含符合 DFSG 的软件,但具有不在 main 中的依赖项,non-free 包含不符合 DFSG 的软件等等。一个提示 -检查存储库 URL 之一,它应该有一个名为组件名称的文件夹。
包管理器说 apt
将有一个数据库,其中包含存储库中所有包的列表,并且它足够智能,可以为您提供建议。
您的软件包管理器可能位于 eof dpkg(例如 Debian、Ubuntu 等)、apt(例如 Debian、Ubuntu 等)、现已过时的 rpm(例如,较旧的 Redhat 版本和较新的版本由于兼容性原因而不会启动)、yum(例如.Fedora、CentOS)、dnf - dentrified yum(例如新的 Fedora 版本)等。进行更完整的列表检查这。您甚至可能会在一个发行版中看到多个包管理器。例如,在 Ubuntu 中,您可能会看到 dpkg 提供 /etc/apt/sources/list。
所以当你输入
cleaq
可能会说
cleaq: no command found. Did you mean clean.
通过什么方式填充“您的意思是:”列表?
这涉及与包管理器数据库中的包进行模式匹配。
当您执行以下操作时,此数据库会更新apt-get update
不确定
我可以更改哪个程序找到这些吗?
尽管。我相信这是一个无法改变的特征。但不太确定
参考:Debian 源列表
答案3
这不是 Linux shell 的标准功能。至少有两种可能性:
zsh
正在维护自己的建议列表- 项目
thefuck
提供另一种
答案4
Police tisn 没有找到警察命令,您的意思是: 包 polipo 中的命令 polipo 包 util-linux 中的命令 ionice $