当参数不包含特殊字符时,我已经成功地为我的自定义命令实现了bash完成,使用compgen机制:
current=${COMP_WORDS[COMP_CWORD]}
all=$(_get_all_items)
COMPREPLY=( $(compgen -W "$all" -- $current) )
...
complete -F _prog_compl prog
Run Code Online (Sandbox Code Playgroud)
我用同样的方式来完成它带一个冒号启动项目::first,:second...,但是它不能告诉我/自动完成它们.我尝试用反斜杠逃避冒号,这也没用.我该怎样逃避冒号完成?
该项目开始于结肠,让我们说::first,:second.如果我写了progname并以这样的冒号开头:
$ progname :<Tab here after colon>
Run Code Online (Sandbox Code Playgroud)
我看到没有完成但是两个冒号("::") - 其中一个自动添加到我输入的行.如果我将冒号转换为普通字符(让我们说'b'),我会完全按照我的要求完成:bfirst,bsecond...
需要注意的是,当我按Tab键时,它会在我之前插入的冒号旁边放置另一个":",它变为"::".
$ bash --version
GNU bash, version 4.1.10(2)-release (i486-slackware-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is …Run Code Online (Sandbox Code Playgroud) 是否可以使用工具跟踪 XWindow 协议?我认为wireshark将是一个很好的框架来承载这样的想法,但似乎没有支持。应该怎么做才能实现这个目标?