【发布时间】:2012-06-12 03:54:55
【问题描述】:
这可能比“自定义选项卡完成”有更好的名称,但情况如下:
通常,当我在命令行输入命令,然后输入两次 {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。
认为它可能是某种负责过滤的包装脚本,做了一个which 和file,结果wine 不是脚本而是可执行文件。
现在,我不知道这个“过滤器”是否以某种方式编码在程序本身中,或者在默认 wine 安装期间以其他方式指定,所以我不确定这个问题是否更适合 stackoverflow 或超级用户,所以我交叉手指并把它扔到这里。如果我猜错了,我很抱歉。 (另外,我检查了一些类似的问题,但大多数都无关紧要或涉及编辑 shell 配置。)
所以我的问题是,这种“过滤”是如何完成的?提前致谢。
【问题讨论】:
-
制表符补全是特定于 shell 的,您使用的是哪个 shell (
echo $SHELL) -
对不起,我正在使用 bash。编辑:4.2.24
标签: linux bash shell tab-completion bash-completion