Ubuntu
cd + bash 完成腳本
我有網路項目
/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_ "$@" }