这可能比“自定义选项卡完成”有更好的名称,但这是场景:
通常,当我在命令行输入一个命令,然后输入两次 {TAB} 时,我会得到当前目录中所有文件和子目录的列表。例如:
[user@host tmp]$ cat <TAB><TAB>
chromatron2.exe Fedora-16-i686-Live-Desktop.iso isolate.py
favicon.ico foo.exe James_Gosling_Interview.mp3
但是,我注意到至少有一个程序以某种方式过滤了这个列表:wine
. 考虑:
[user@host tmp]$ wine <TAB><TAB>
chromatron2.exe foo.exe
它有效地将结果过滤到*.exe
.
认为它可能是某种负责过滤的包装脚本,a did awhich
和file
an 结果wine
不是脚本而是可执行文件。
现在,我不知道这个“过滤器”是否以某种方式编码在程序本身中,或者在默认的 wine 安装期间以其他方式指定,所以我不确定这个问题是否更适合 stackoverflow 或超级用户,所以我交叉手指扔到这里。如果我猜错了,我很抱歉。(另外,我检查了一些类似的问题,但大多数都无关紧要或涉及编辑 shell 配置。)
所以我的问题是,这种“过滤”是如何完成的?提前致谢。