8.7 可编程完成的内置程序

评论 0 浏览 0 2023-01-26

有三个内置的命令可以用来操作可编程的完成工具:一个是指定如何完成某一特定命令的参数,另一个是修改正在发生的完成情况。

compgen
compgen [option] [word]

根据options为word生成可能的完成匹配,可以是complete内置接受的任何选项,但-p-r除外,并将匹配结果写入标准输出。 当使用-F-C选项时,由可编程完成工具设置的各种shell变量虽然可用,但将没有有用的值。

匹配将以同样的方式产生,就像可编程完成代码直接从具有相同标志的完成规范中产生一样。 如果指定了word,只有那些与word相匹配的完成将被显示。

返回值为真,除非提供了一个无效的选项,或者没有产生任何匹配的结果。

complete
complete [-abcdefgjksuv] [-o comp-option] [-DEI] [-A action] [-G globpat]
[-W wordlist] [-F function] [-C command] [-X filterpat]
[-P prefix] [-S suffix] name [name …]
complete -pr [-DEI] [name …]

指定每个name的参数应该如何完成。 如果提供了-p选项,或者没有提供选项,现有的完成规范将被打印出来,允许它们作为输入被重新使用。 -r选项为每个name删除一个完成规范,或者,如果没有提供name,删除所有完成规范。-D选项表示其他提供的选项和操作应该适用于“默认”的命令完成;也就是说,在一个先前没有定义完成的命令上尝试完成。选项-E表示其他提供的选项和操作应适用于“空”命令的完成,即在空行上尝试完成。 选项-I表示其他提供的选项和操作应适用于在行上最初的非分配字上完成,或在命令分隔符(如‘;’或‘|’这通常是命令名完成。如果提供了多个选项,-D选项优先于-E,两者都优先于-I。 如果提供了-D-E-I中的任何一个,其他任何name参数都被忽略;这些补全仅适用于选项指定的情况。

上文描述了在试图完成单词时应用这些完成规范的过程(见8.6 可编程完成)。

如果指定了其他选项,其含义如下:-G-W-X选项的参数(如果有必要,还有-P-S选项)应该被加引号,以保护它们在调用complete内置程序之前不会被扩展。

-o comp-option

comp-option可以是以下之一:comp-option控制compspec’行为的几个方面,而不是简单地生成补语。

bashdefault

如果compspec没有产生任何匹配,则执行其余的默认Bash补全程序。

default

如果编译器没有生成匹配的文件,则使用Readline’默认的文件名补全。

dirnames

如果compspec没有生成匹配的目录名,则执行目录名补全。

filenames

告诉Readline编译器会生成文件名,所以它可以执行任何针对文件名的处理(比如给目录名添加斜线,引用特殊字符,或者抑制尾部的空格)。 这个选项旨在与用-F指定的shell函数一起使用。

noquote

告诉Readline,如果完成的字是文件名,就不要引证它们(引证文件名是默认的)。

nosort

告诉Readline不要按字母顺序对可能完成的任务列表进行排序。

nospace

告诉Readline不要在行末完成的单词上附加空格(默认值)。

plusdirs

在产生由compspec定义的任何匹配后,尝试完成目录名称,并将任何匹配结果添加到其他操作的结果中。

-A action

action可以是下列之一,以生成一个可能的完成度的列表。

alias

别名的名称。也可以指定为-a

arrayvar

阵列变量的名称。

binding

读行键的绑定名称(见8.4 可绑定的 Readline 命令)。

builtin

shell内置命令的名称。也可以指定为-b

command

命令名称。也可以指定为-c

directory

目录名称。也可以指定为-d

disabled

被禁用的shell内建程序的名称。

enabled

启用的shell内建程序的名称。

export

输出的shell变量的名称。也可以指定为-e

file

文件名称。也可以指定为-f

function

shell函数的名称。

group

集团名称。也可以指定为-g

helptopic

帮助主题是由help内建程序接受的(见4.2 Bash的内置命令)。

hostname

主机名,取自HOSTFILE shell变量所指定的文件(见5.2 Bash 变量)。

job

工作名称,如果工作控制被激活。也可以指定为-j

keyword

外壳保留字。也可以指定为-k

running

正在运行的作业的名称,如果作业控制处于活动状态。

service

服务名称。也可指定为-s

setopt

set内建程序的-o选项的有效参数(见1 Set 内置程序)。

shopt

shopt内建程序接受的Shell选项名称(见4.2 Bash的内置命令)。

signal

信号的名称。

stopped

如果工作控制处于活动状态,停止的工作的名称。

user

用户名称。也可指定为-u

variable

所有shell变量的名称。也可以指定为-v

-C command

command在子壳环境中执行,它的输出被用作可能的补全。 参数的传递与-F选项一样。

-F function

shell函数function在当前的shell环境中执行。 当它执行时,1美元是其参数被完成的命令名称,2美元是被完成的单词,3美元是被完成的单词前面的单词,如上所述(见可编程完成)。 当它完成时,可能的完成值从COMPREPLY数组变量的值中检索出来。

-G globpat

文件名扩展模式globpat被扩展,以产生可能的补全。

-P prefix

prefix在所有其他选项被应用后,被添加在每个可能的完成度的开头。

-S suffix

suffix在所有其他选项被应用后,被附加到每个可能的完成度上。

-W wordlist

wordlist使用IFS特殊变量中的字符作为分隔符进行分割,并对每个结果词进行扩展。 可能的补全是结果列表中与被补全的单词相匹配的成员。

-X filterpat

filterpat是一个用于文件名扩展的模式。 它被应用于由前面的选项和参数产生的可能的补全列表,每个与filterpat相匹配的补全都被从列表中删除。 在filterpat中领先的‘!’会否定该模式;在这种情况下,任何不匹配filterpat的补全都被删除了。

返回值为真,除非提供了无效的选项,提供了-p-r以外的选项而没有name参数,试图为一个不存在规范的name删除完成规范,或在添加完成规范时发生错误。

compopt
compopt [-o option] [-DEI] [+o option] [name]

根据options修改每个name的完成选项,如果没有提供name,则修改当前执行的完成选项。 如果没有提供option,则显示每个name的完成选项或当前的完成。option的可能值是那些对上述complete内置程序有效的值。 -D选项表示其他提供的选项应适用于“默认”命令完成;也就是说,在一个先前没有定义完成的命令上尝试完成。选项-E表示其他提供的选项应适用于“空”命令的完成;即在空行上尝试完成。 选项-I表示其他提供的选项应适用于在行上最初的非分配字上完成,或在命令分隔符(如‘’或‘|’这通常是命令名完成。

如果提供了多个选项,则-D选项优先于-E,两者都优先于-I

返回值为真,除非提供了一个无效的选项,试图为一个不存在完成规范的name修改选项,或者发生了输出错误。

最后更新2023-03-15
0 个评论
当前页面书签