10种有用的Linux Bash_Completion 命令示例( 二 )


$ export IFS=" "$ complete -W "bubble quick" ./sort_numbers.sh$ ./sort_numbers.sh [TAB][TAB]bubblequick如上所述 , 通过IFS分隔符分割字符串后 , 单词得到扩展 , 因此也可以将这些作为变量 , 如下所示 , 
$ echo $SORT_TYPE1bubble$ echo $SORT_TYPE2quick$ complete -W "$SORT_TYPE1 $SORT_TYPE2" ./sort_numbers.sh$ ./sort_numbers.sh [TAB][TAB]bubblequick9. 编写你自己的函数来生成完成它允许您包含一个函数来定义完成 。使用 -F 选项 , 传递给完成命令的函数名称并被执行以生成完成 。例如 , 函数编写如下所示 , 
_parser_options(){local curr_arg; curr_arg=${COMP_wordS[COMP_CWORD]} COMPREPLY=( $(compgen -W '-i --incoming -o --outgoing -m --missed' -- $curr_arg ) );}在上述函数中 , 

  1. 1.COMPREPLY :数组保存按 [TAB][TAB] 后显示的完成结果
  2. 2.COMP_WORDS :在命令行上键入的单词数组
  3. 3.COMP_CWORD :COMP_WORDS 数组的索引 , 并且可以在命令行上使用此不同位置的单词进行访问 。
  4. 4.compgen : -W 保存可能的完成 , 并根据 $current_arg 选择相应的参数
文件 parser_option 中存在的此函数的来源如下所示 , 
$ source parser_option将此函数链接到您的解析器脚本 , 如下所示 , 
$ complete -F _parser_options ./parser.pl$ ./parser.pl [TAB][TAB]-i--incoming-o--outgoing-m--missed如上所示 , 解析器的选项由函数 _parser_options() 生成 。
注意:查看 /etc/bash_completion 以查看可编程完成的更多功能 。
10. 当主要不生成任何辅助规范时如果定义的完成规范没有生成匹配项 , 则使用 comp-option 来完成 -o 选项提到的完成 。
$ complete -F _count_files -o dirnames ./countfiles.sh如上所述 , 完成是用文件 ./countfiles.sh 的 _count_files 函数定义的 。如果 _count_files() 函数未生成任何匹配项 , 则尝试完成目录 。
$ ls countfiles.shdir1/dir2/dir3/$./countfiles.sh [TAB][TAB]dir1dir2dir3




推荐阅读