Ubuntu

cd + bash 完成腳本

  • April 6, 2011

我有網路項目/var/www/projects/some/long/path/strange-project-name

現在我想輸入終端:

webs str{TAB}

它應該自動完成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

_get_cword取決於正在安裝的 bash-completions 包。如果沒有,請更改該行:

cur=$(_get_cword)

到:

cur=${COMP_WORDS[$COMP_CWORD]}

、功能:

webs () {
   local projdir=/var/www/projects/some/long/path
   cd "$projdir"
   do_something_ "$@"
}

引用自:https://serverfault.com/questions/198577