Bash 配置与定制全攻略
1. 信号名补全处理
在使用complete的-A signal选项时,虽然能获取信号名列表,但这些名字的格式不太实用,无法直接用于生成信号名数组。因为生成的名字以 “SIG” 开头,而kill命令所需的名字并非如此。_signal函数的作用是将信号名数组赋值给$COMPREPLY,可选择在前面加上一个破折号。
操作步骤如下:
1. 使用compgen生成信号名列表,每个名字以 “SIG” 开头。
2. 若用户已开始输入信号名,为使complete提供正确的子集,需在$cur的值前加上 “SIG”,同时去除值前面可能存在的破折号以实现匹配。
3. 遍历数组,去除每个条目中的 “SIG” 字母,并根据需要(变量sign的值)添加破折号。
示例代码如下:
COMPREPLY[i]=$sign${COMPREPLY[i]#SIG} done }complete和compgen还有许多其他选项和操作,若想进一步了解可编程补全功能,可查阅 bash 手册,也可从互联网或 bash 压缩包的./examples/complete