tak*_*hin 1 ubuntu bash command-line-interface
我有网络项目/var/www/projects/some/long/path/strange-project-name
现在我想在终端输入:
webs str{TAB}
Run Code Online (Sandbox Code Playgroud)
它应该自动完成webs strange-project-name(基于ls /var/www/projects/some/long/path/),并且在执行命令后,pwd应该指向项目路径。cd strange-project-name自动完成功能有点智能
您将如何实现此功能?一些智能别名?函数在.bashrc? 脚本?
一些智能别名?
你需要一个两人合作的人。一、补全脚本:
_webs() {
local cur prev projdir=/var/www/projects/some/long/path
COMPREPLY=()
cur=$(_get_cword)
prev=${COMP_WORDS[COMP_CWORD-1]}
COMPREPLY=( $( compgen -W '$( command ls "$projdir/$cur*" | sed "s|$projdir/||")' -- '' ) )
}
complete -F _webs webs
Run Code Online (Sandbox Code Playgroud)
_get_cword取决于正在安装的 bash-completions 包。如果没有,请更改该行:
cur=$(_get_cword)
Run Code Online (Sandbox Code Playgroud)
到:
cur=${COMP_WORDS[$COMP_CWORD]}
Run Code Online (Sandbox Code Playgroud)
二、一个函数:
webs () {
local projdir=/var/www/projects/some/long/path
cd "$projdir"
do_something_ "$@"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1092 次 |
| 最近记录: |