Command line 自动完成命令行参数
在bash中,mplayer和imagemagick的“convert”等可执行文件在其命令行参数上具有很酷的自动完成功能。例如,如果我键入Command line 自动完成命令行参数,command-line,autocomplete,command-line-arguments,Command Line,Autocomplete,Command Line Arguments,在bash中,mplayer和imagemagick的“convert”等可执行文件在其命令行参数上具有很酷的自动完成功能。例如,如果我键入 mplayer <tab><tab> convert -<tab><tab> mplayer 在我的一个视频文件夹中,mplayer将列出该文件夹中的所有媒体文件,仅列出媒体文件 同样,如果我输入 mplayer <tab><tab> convert -<tab>&
mplayer <tab><tab>
convert -<tab><tab>
mplayer
在我的一个视频文件夹中,mplayer将列出该文件夹中的所有媒体文件,仅列出媒体文件
同样,如果我输入
mplayer <tab><tab>
convert -<tab><tab>
转换-
然后我将看到convert脚本的所有可能选项,这非常好
我的问题是如何使用bash、ruby或python脚本实现类似的功能?这是bash智能完成的一个示例。一个基本的描述是,编写您自己的扩展的指南是,另一个(基于Debian的)指南是。下面是
complete
命令(促进此行为的命令)的一个示例。bash中的此功能由提供,类似的功能也包含在zsh中。如果您想为这些工具之一当前不支持的某些程序添加支持,则需要为它们编写自己的扩展。在接受的答案中编写自己的扩展的链接已失效。引自
Bash为您提供了一种指定关键字的方法,并使用它们来
自动完成应用程序的命令行参数。我使用vim
作为wiki,任务管理器和联系人。vim帮助标签系统允许
我索引内容,而不是搜索它,以及速度
显示它。我想添加的一个功能是访问这些标签
从维姆的外面
这可以直接进行:
$ vim -t tagname
这会将我直接带到使用此标记标记的特定内容。但是,如果我能提供
标签的自动完成
我首先为vim命令行定义了一个Bash函数。我添加了
将以下代码添加到my.bashrc文件:
function get {
vim -t $1
} Now I can use get tagname command to get to the content.
Bash可编程完成是通过寻找
/etc/bash完成脚本。脚本允许我们添加
自动完成脚本/etc/bash-completion.d/目录并执行
无论什么时候叫它,它都是。所以我添加了一个名为get with the的脚本文件
下面是该目录中的代码
_get()
{
local cur
COMPREPLY=()
#Variable to hold the current word
cur="${COMP_WORDS[COMP_CWORD]}"
#Build a list of our keywords for auto-completion using
#the tags file
local tags=$(for t in `cat /home/anadgouda/wiki/tags | \
awk '{print $1}'`; do echo ${t}; done)
#Generate possible matches and store them in the
#array variable COMPREPLY
COMPREPLY=($(compgen -W "${tags}" $cur))
}
#Assign the auto-completion function _get for our command get.
complete -F _get get Once the /etc/bash-completion is sourced, you will get auto-completion for the tags when you use the get command.
与我的wiki一起,我将其用于所有文档工作和
倍的代码。我还使用从代码创建的标记文件。这个
索引系统可以让我记住上下文而不是文件名
和目录
您可以针对您使用的任何工具调整此系统。你需要的一切
要做的是为您的命令获取一个关键字列表,并将其交给
Bash可编程完成系统
谢谢我刚刚修复了已接受答案中的链接。该链接已失效。