我在 Debian Squeeze 上安装了一个程序 ( iftop
),但几天前我忘记了它的名称。我只知道有关该计划的信息:
1)它被称为*top
2)我可以使用 找到它bash-completions
。
我想要 的grep
所有选项bash-completion
。你知道我该怎么做吗?
答案1
使用compgen
内置函数获取可能完成的列表:
compgen -c | grep top
您可以请求完成各种类型的完成操作,例如命令、别名、函数...,例如-c
相当于-A commands
.请参阅man bash
了解更多详情。
答案2
使用起来compgen
绝对是一件好事。或者,这适用于任何 POSIX shell,您可以使用以下命令签入命令$PATH
:
(IFS=:; set -f; ls -- $PATH | grep top$)
和zsh
:
type -m '*top'
您还可以查询whatis数据库:
man -ks1:8 top$
答案3
虽然你可以从完成系统中找出来,这不是最明显的方法。
pacakges 安装的几乎所有程序都在 中,因此您可以列出名称以 结尾的/usr/bin
程序:/usr/bin
top
echo /usr/bin/*top
您可以按 inode 更改时间列出文件。已安装程序的修改时间通常是其编译时间,因为归档和安装工具会将修改时间与数据一起复制。但是文件的 inode 更改时间是最后一次发生任何事情的时间,包括被提取或复制(事实上,它的修改时间更改会重置 inode 更改时间)。由于您最近安装了该程序,因此它是以下命令显示的最后一个程序之一:
ls -lctr /usr/bin/*top
r
如果您想从顶部而不是从底部开始查看,请删除该选项。
您还可以查看已安装程序的日志。它们位于/var/log/history.log
。
答案4
您可以使用 shell 函数来搜索 PATH 和包含二进制文件但不在 PATH 中的已知目录。例子:
findprogram() {
ls $(echo $PATH:/sbin:/usr/sbin | sed "s/:/\ /g") | grep "$1" | sort --unique
}
用法:
findprogram top
这会输出一个排序的候选列表。