我在一台共享机器上有一个帐户,但无法访问 /usr/bin,那里有很多我从未使用过的程序。
我希望制表符可以忽略其中许多程序。例如,我想on<TAB>
完成到oneprog
,但还有其他匹配项。
~> on
on_ac_power oneprog onto2vocabularyclass
除了创建 /usr/bin 的镜像之外,有没有其他方法可以隐藏另外两个匹配项?
答案1
假设猛击...
您可以使用 为选项/参数定义自己的自动完成规则complete
。您可以通过导出变量 来定义在参数中被忽略的文件名后缀$FIGNORE
。
不过,我认为您无法改变 Bash 解析程序名称的方式。
当然,您可以alias
运行您想要运行的程序,这样您就不必输入那么多:
[me@host ~]$ alias on=oneprog
[me@host ~]$ on
你可以(如果您觉得很傻)为 Bash 内置命令添加别名,command
并使用它complete
来定义它将接受的参数(您的好程序列表),然后始终记得在真正的命令之前输入您的别名。
[me@host ~]$ alias run=command
[me@host ~]$ complete -W "ls cd" run
[me@host ~]$ run ls
也可以看看如何让自动完成功能忽略特定的完成。