1

我在https://opensource.apple.com/source/tcsh/tcsh-66/tcsh/complete.tcsh找到了这段代码,它可以自动完成 tcsh 中的模块文件 。

有人可以帮助我了解“别名 Compl_module”的工作原理吗?

#from Dan Nicolaescu <dann@ics.uci.edu>
if ( $?MODULESHOME ) then
  alias Compl_module 'find ${MODULEPATH:as/:/ /} -name .version -o -name .modulea\* -prune -o -print  | sed `echo "-e s@${MODULEPATH:as%:%/\*@@g -e s@%}/\*@@g"`'
  complete module 'p%1%(add load unload switch display avail use unuse update purge list clear help initadd initrm initswitch initlist initclear)%' \
  'n%{unl*,sw*,inits*}%`echo "$LOADEDMODULES:as/:/ /"`%' \
  'n%{lo*,di*,he*,inita*,initr*}%`eval Compl_module`%' \
  'N%{sw*,initsw*}%`eval Compl_module`%' 'C%-%(-append)%' 'n%{use,unu*,av*}%d%' 'n%-append%d%' \
  'C%[^-]*%`eval Compl_module`%'
endif

非常感谢。

4

1 回答 1

0

不确定这个Compl_module别名是否表现良好,因为它试图通过查看现有文件来确定模块路径中的所有现有模块文件。Modulefiles 也可以是别名、符号版本和虚拟版本(在较新的 Modules 版本 >=4.1 中),因此Compl_module别名会丢失。

您将在 Modules 项目的源存储库中module找到该命令的完整完成脚本。

此完成脚本调用module avail以正确获取启用的模块路径中的所有现有模块文件。

从 Modules 4.0 版开始自动启用 TCSH 完成脚本。

于 2018-06-23T08:36:53.153 回答