#Bash 的 compgen 命令
compgen [OPTION]... [WORD]
功能
根据选项显示可能的补全结果。
类型
Bash 内置命令。
参数
OPTION- 选项-a- 补全为别名-b- 补全为内置命令-c- 补全为命令-d- 补全为目录-e- 补全为环境变量名-f- 补全为文件-g- 补全为组名-j- 补全为作业名-k- 补全为关键字-s- 补全为服务名;参考/etc/services-u- 补全为用户名;参考/etc/passwd-v- 补全为变量名-o option- 开启选项nospace- 补全后不自动添加空格filenames- 告知 Bash 结果是文件名;补全过程中会在目录后加上/bashdefault- 如果没找到匹配项,则回退到 Bash 默认补全default- 如果没找到匹配项,则回退到默认行为dirnames- 如果没有匹配项,则尝试进行目录名补全
+o option- 关闭选项-A action- 补全方式alias- 补全为别名;同-a选项builtin- 补全为内置命令;同-b选项command- 补全为命令;同-c选项directory- 补全为目录;同-d选项export- 补全为环境变量名;同-e选项file- 补全为文件;同-f选项group- 补全为组名;同-g选项job- 补全为作业吗;同-j选项keyword- 补全为关键字;同-k选项service- 补全为服务;同-s选项
-G globpat- 补全通配符字符串globpat-W wordlist- 以wordlist作为补全列表-F function- 通过函数function生成补全列表-C command- 通过命令command生成补全列表-X filterpat- 根据filterpat从补全列表中滤除部分选项-P prefix- 为补全的结果添加前缀-S suffix- 为补全的结果添加后缀
WORD- 要补全的单词
#示例
命令补全
$ compgen -c ls
ls
lsmod
lsipc
lspci
lsmod
...
通配符
$ compgen -G '*.txt'
3.txt
2.txt
1.txt
注意要加引号,否则在执行命令前就会解析成
compgen -G 1.txt 2.txt 3.txt。
指定补全列表
$ compgen -W "xxx1 xxx2 xxx3 yyy1 yyy2 yyy3" xx
xxx1
xxx2
xxx3
添加前后缀
$ compgen -G '*.txt' -P 'cat ' -S ' >>file.txt'
cat 3.txt >>file.txt
cat 2.txt >>file.txt
cat 1.txt >>file.txt
#相关命令
#手册
compgen: compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]
Display possible completions depending on the options.
Intended to be used from within a shell function generating possible
completions. If the optional WORD argument is supplied, matches against
WORD are generated.
Exit Status:
Returns success unless an invalid option is supplied or an error occurs.