在 tcsh 中自动完成时,我可以引用之前的参数吗?

Hug*_*ugh 5 linux tcsh autocomplete

我试图在这里进行一些高效的自动完成,但遇到了一些障碍。

我有一个命令可以同时设置两件事。第一个是一个相对较小的列表,但第二个,如果没有被第一个过滤,那么大到难以管理。

我想要做的是将已经为第一个参数输入或自动完成的内容传递给第二个自动完成命令......

complete job 'p/1/`listJobs`/' 'p/2/`listTasks`/'
Run Code Online (Sandbox Code Playgroud)

我想要做的是将已经为第一个参数输入的作业传递给“listTasks”命令。

知道我该怎么做吗?

干杯

(这是我的 SuperUser.com 旧问题的转帖,没有人回答过...... SuperUser 问题可以在这里找到)

Mik*_*kel 4

这是我能找到的最佳选择:

complete job 'p/1/`listJobs`/' \
             'p/2/`set cmd = ( $COMMAND_LINE ); listTasks $cmd[$#cmd]`/'
Run Code Online (Sandbox Code Playgroud)

它依赖于一个名为 的变量$COMMAND_LINE,该变量在我的 Ubuntu 系统上可用,但我不确定它是否是标准的。

从版本调用的命令...具有附加的环境变量集,变量名称为 COMMAND_LINE 并包含(如其名称所示)当前(已输入)命令行的内容。人们可以在自定义脚本中检查和使用 COMMAND_LINE 变量的内容来构建更复杂的完成(请参阅此包中包含的 svn(1) 的完成)。

如果做不到这一点,您将尝试历史扩展,例如!!!#$,但我不确定这是否可行。