Fal*_*rri 35 bash autocomplete
有没有办法让 bash 确切地知道当你双击时要显示什么?例如,我有一个scpy需要几个参数的 python 脚本。例如apt-get,如果你双标签给你
autoclean build-dep clean dselect-upgrade 清除源升级 自动删除检查 dist-upgrade 安装删除更新
有没有办法为您自己的脚本/程序做到这一点?我需要将我的 python 脚本包装在 bash 脚本中吗?
Ste*_*n D 38
最简单的方法是在/etc/bash_completion.d/. 这个文件的基本结构是一个简单的函数,它执行完成,然后调用complete它是一个内置的 bash。与其详细介绍如何使用complete,我建议您阅读An Introduction to Bash Completion。第 1 部分介绍基础知识,第 2 部分介绍如何编写完成脚本。
bash 完成的更详细描述可以在“可编程完成”部分找到man bash(你可以输入“/Programmable Completion”,然后按 'n' 几次以快速到达那里。或者,如果你感觉好运,“g 2140 返回”)。
Edu*_*omo 13
这是基本指南。
让我们有一个名为 admin.sh 的脚本示例,您希望自动完成工作。
#!/bin/bash
while [ $# -gt 0 ]; do
arg=$1
case $arg in
option_1)
# do_option_1
;;
option_2)
# do_option_1
;;
shortlist)
echo option_1 option_2 shortlist
;;
*)
echo Wrong option
;;
esac
shift
done
Run Code Online (Sandbox Code Playgroud)
注意选项入围名单。使用此选项调用脚本将打印出此脚本的所有可能选项。
在这里你有自动完成脚本:
_script()
{
_script_commands=$(/path/to/your/script.sh shortlist)
local cur prev
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=( $(compgen -W "${_script_commands}" -- ${cur}) )
return 0
}
complete -o nospace -F _script ./admin.sh
Run Code Online (Sandbox Code Playgroud)
请注意,要完成的最后一个参数是您要添加自动完成功能的脚本的名称。您需要做的就是将自动完成脚本添加到 bashrc 中
source /path/to/your/autocomplete.sh
Run Code Online (Sandbox Code Playgroud)
或将其复制到 /etc/bash.completion.d
来源:https : //askubuntu.com/a/483149/24155
| 归档时间: |
|
| 查看次数: |
31332 次 |
| 最近记录: |