我正在为生成虚拟文件树的工具制作tcsh完成脚本。查询时,此工具返回所有可用元素,它们混合结果中的文件和目录(目录中带有尾随/,以将它们与文件区分开)。
例如,此可用性列表命令(module avail
)会产生以下结果:
$ module avail
file
b
cd/
d
dir/
然后,如果查询目录的内容,则返回其中包含的元素:
$ module avail dir/
dir/e
dir/f
dir/subdir/
我想注入这些可用元素作为该工具其他子命令的选择。单词完成后,Tcsh完成功能会自动添加一个空格字符作为后缀。仅在单词完成不是目录时,才需要添加此空格字符后缀。如果是目录,则不应该添加后缀字符,以便能够对该目录名进行新查询。
这里有一个小小的补全脚本来说明我遇到的问题:
alias _module_avail 'echo file b cd/ d dir/'
set module_cmds = "load"
complete module 'n/load/`_module_avail`//' \
"p/1/(${module_cmds})/"
使用此示例脚本,我想在键入module load fi[tab]
时添加一个空格字符,但在键入module load dir[tab]
时不添加空格后缀。
答案 0 :(得分:0)
您是否研究过在shell中设置添加后缀? 对我来说,可以实现您正在寻找的行为。
(我会将此添加为问题的评论,但我没有足够的声誉来评论:/)