最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

linux自动补全死机,ubuntu

IT圈 admin 22浏览 0评论

linux自动补全死机,ubuntu

问题:输入: cd p,使用Tab补全,期望进入pub_work目录,虽然自动补全,成功进入目录;却给我打印一连串的字符,纠结;

[email protected]:~$ cd p+ local cur prev words cword

+ _init_completion

+ local exclude= flag outx errx inx OPTIND=1

+ getopts n:e:o:i:s flag

+ COMPREPLY=()

+ local ‘redir=@(?([0-9])?(>)|>&)‘

+ _get_comp_words_by_ref -n ‘<>&‘ cur prev words cword

+ local exclude flag i OPTIND=1

+ words=()

+ local cur cword words

+ upargs=()

+ upvars=()

+ local upargs upvars vcur vcword vprev vwords

+ getopts c:i:n:p:w: flag -n ‘<>&‘ cur prev words cword

+ case $flag in

+ exclude=‘<>&‘

+ getopts c:i:n:p:w: flag -n ‘<>&‘ cur prev words cword

+ [[ 6 -ge 3 ]]

+ case ${!OPTIND} in

+ vcur=cur

+ let ‘OPTIND += 1‘

+ [[ 6 -ge 4 ]]

+ case ${!OPTIND} in

+ vprev=prev

+ let ‘OPTIND += 1‘

+ [[ 6 -ge 5 ]]

+ case ${!OPTIND} in

+ vwords=words

+ let ‘OPTIND += 1‘

+ [[ 6 -ge 6 ]]

+ case ${!OPTIND} in

+ vcword=cword

+ let ‘OPTIND += 1‘

+ [[ 6 -ge 7 ]]

+ __get_cword_at_cursor_by_ref ‘<>&‘ words cword cur

+ words=()

+ local cword words

+ __reassemble_comp_words_by_ref ‘<>&‘ words cword

+ local exclude i j line ref

+ [[ -n <>& ]]

+ exclude=‘<>&‘

+ eval cword=1

++ cword=1

+ [[ -n <>& ]]

+ line=‘cd p‘

+ (( i=0, j=0 ))

+ (( i < 2 ))

+ [[ 0 -gt 0 ]]

+ ref=‘words[0]‘

+ eval ‘words[0]=${!ref}${COMP_WORDS[i]}‘

++ words[0]=cd

+ line=‘ p‘

+ [[ 0 == 1 ]]

+ (( i++, j++ ))

+ (( i < 2 ))

+ [[ 1 -gt 0 ]]

+ [[ p == +([<>&]) ]]

+ ref=‘words[1]‘

+ eval ‘words[1]=${!ref}${COMP_WORDS[i]}‘

++ words[1]=p

+ line=

+ [[ 1 == 1 ]]

+ eval cword=1

++ cword=1

+ (( i++, j++ ))

+ (( i < 2 ))

+ [[ 2 == 1 ]]

+ local i cur index=4 ‘lead=cd p‘

+ [[ 4 -gt 0 ]]

+ [[ -n cd p ]]

+ [[ -n cdp ]]

+ cur=‘cd p‘

+ (( i = 0 ))

+ (( i <= cword ))

+ [[ 4 -ge 2 ]]

+ [[ cd != \c\d ]]

+ [[ 0 -lt 1 ]]

+ local old_size=4

+ cur=‘ p‘

+ local new_size=2

+ index=2

+ (( ++i ))

+ (( i <= cword ))

+ [[ 2 -ge 1 ]]

+ [[ != \p ]]

+ cur=p

+ (( index-- ))

+ [[ 1 -ge 1 ]]

+ [[ p != \p ]]

+ [[ 1 -lt 1 ]]

+ (( ++i ))

+ (( i <= cword ))

+ [[ -n p ]]

+ [[ ! -n p ]]

+ [[ 1 -lt 0 ]]

+ local words cword cur

+ _upvars -a2 words cd p -v cword 1 -v cur p

+ (( 10 ))

+ (( 10 ))

+ case $1 in

+ [[ -n 2 ]]

+ printf %d 2

+ [[ -n words ]]

+ unset -v words

+ eval ‘words=("${@:3:2}")‘

++ words=("${@:3:2}")

+ shift 4

+ (( 6 ))

+ case $1 in

+ [[ -n cword ]]

+ unset -v cword

+ eval ‘cword="$3"‘

++ cword=1

+ shift 3

+ (( 3 ))

+ case $1 in

+ [[ -n cur ]]

+ unset -v cur

+ eval ‘cur="$3"‘

++ cur=p

+ shift 3

+ (( 0 ))

+ [[ -n cur ]]

+ upvars+=("$vcur")

+ upargs+=(-v $vcur "$cur")

+ [[ -n cword ]]

+ upvars+=("$vcword")

+ upargs+=(-v $vcword "$cword")

+ [[ -n prev ]]

+ [[ 1 -ge 1 ]]

+ upvars+=("$vprev")

+ upargs+=(-v $vprev "${words[cword - 1]}")

+ [[ -n words ]]

+ upvars+=("$vwords")

+ upargs+=(-a${#words[@]} $vwords "${words[@]}")

+ (( 4 ))

+ local cur cword prev words

+ _upvars -v cur p -v cword 1 -v prev cd -a2 words cd p

+ (( 13 ))

+ (( 13 ))

+ case $1 in

+ [[ -n cur ]]

+ unset -v cur

+ eval ‘cur="$3"‘

++ cur=p

+ shift 3

+ (( 10 ))

+ case $1 in

+ [[ -n cword ]]

+ unset -v cword

+ eval ‘cword="$3"‘

++ cword=1

+ shift 3

+ (( 7 ))

+ case $1 in

+ [[ -n prev ]]

+ unset -v prev

+ eval ‘prev="$3"‘

++ prev=cd

+ shift 3

+ (( 4 ))

+ case $1 in

+ [[ -n 2 ]]

+ printf %d 2

+ [[ -n words ]]

+ unset -v words

+ eval ‘words=("${@:3:2}")‘

++ words=("${@:3:2}")

+ shift 4

+ (( 0 ))

+ _variables

+ [[ p =~ ^(\$\{?)([A-Za-z0-9_]*)$ ]]

+ return 1

+ [[ p == @(?([0-9])?(>)|>&)* ]]

+ [[ cd == @(?([0-9])?(>)|>&) ]]

+ local i skip

+ (( i=1 ))

+ (( i < 2 ))

+ [[ p == @(?([0-9])?(>)|>&)* ]]

+ i=2

+ (( 1 ))

+ (( i < 2 ))

+ [[ 1 -le 0 ]]

+ prev=cd

+ [[ -n ‘‘ ]]

+ return 0

+ local ‘IFS=

‘ i j k

+ compopt -o filenames

+ [[ -z ‘‘ ]]

+ _filedir -d

+ local i ‘IFS=

‘ xspec

+ _tilde p

+ local result=0

+ [[ p == \~* ]]

+ return 0

+ local -a toks

+ local quoted x tmp

+ _quote_readline_by_ref p quoted

+ ‘[‘ -z p ‘]‘

+ [[ p == \‘* ]]

+ [[ p == \~* ]]

+ printf -v quoted %q p

+ [[ p == *\\* ]]

+ [[ p == \$* ]]

++ compgen -d -- p

+ x=pub_work

+ read -r tmp

+ toks+=("$tmp")

+ read -r tmp

+ [[ -d != -d ]]

+ [[ -n ‘‘ ]]

+ [[ 1 -ne 0 ]]

+ compopt -o filenames

+ COMPREPLY+=("${toks[@]}")

+ return 0

ub_work/

+ cd pub_work/

[email protected]:pub_work$

原来是开启了脚本调试功能,关闭就好啦;

用于脚本调试。set是把它下面的命令打印到屏幕

set -x 是开启 set +x是关闭 set -o是查看 (xtrace),set去追中一段代码的显示情况。

执行set -x后,对整个脚本有效。

原文:.html

linux自动补全死机,ubuntu

问题:输入: cd p,使用Tab补全,期望进入pub_work目录,虽然自动补全,成功进入目录;却给我打印一连串的字符,纠结;

[email protected]:~$ cd p+ local cur prev words cword

+ _init_completion

+ local exclude= flag outx errx inx OPTIND=1

+ getopts n:e:o:i:s flag

+ COMPREPLY=()

+ local ‘redir=@(?([0-9])?(>)|>&)‘

+ _get_comp_words_by_ref -n ‘<>&‘ cur prev words cword

+ local exclude flag i OPTIND=1

+ words=()

+ local cur cword words

+ upargs=()

+ upvars=()

+ local upargs upvars vcur vcword vprev vwords

+ getopts c:i:n:p:w: flag -n ‘<>&‘ cur prev words cword

+ case $flag in

+ exclude=‘<>&‘

+ getopts c:i:n:p:w: flag -n ‘<>&‘ cur prev words cword

+ [[ 6 -ge 3 ]]

+ case ${!OPTIND} in

+ vcur=cur

+ let ‘OPTIND += 1‘

+ [[ 6 -ge 4 ]]

+ case ${!OPTIND} in

+ vprev=prev

+ let ‘OPTIND += 1‘

+ [[ 6 -ge 5 ]]

+ case ${!OPTIND} in

+ vwords=words

+ let ‘OPTIND += 1‘

+ [[ 6 -ge 6 ]]

+ case ${!OPTIND} in

+ vcword=cword

+ let ‘OPTIND += 1‘

+ [[ 6 -ge 7 ]]

+ __get_cword_at_cursor_by_ref ‘<>&‘ words cword cur

+ words=()

+ local cword words

+ __reassemble_comp_words_by_ref ‘<>&‘ words cword

+ local exclude i j line ref

+ [[ -n <>& ]]

+ exclude=‘<>&‘

+ eval cword=1

++ cword=1

+ [[ -n <>& ]]

+ line=‘cd p‘

+ (( i=0, j=0 ))

+ (( i < 2 ))

+ [[ 0 -gt 0 ]]

+ ref=‘words[0]‘

+ eval ‘words[0]=${!ref}${COMP_WORDS[i]}‘

++ words[0]=cd

+ line=‘ p‘

+ [[ 0 == 1 ]]

+ (( i++, j++ ))

+ (( i < 2 ))

+ [[ 1 -gt 0 ]]

+ [[ p == +([<>&]) ]]

+ ref=‘words[1]‘

+ eval ‘words[1]=${!ref}${COMP_WORDS[i]}‘

++ words[1]=p

+ line=

+ [[ 1 == 1 ]]

+ eval cword=1

++ cword=1

+ (( i++, j++ ))

+ (( i < 2 ))

+ [[ 2 == 1 ]]

+ local i cur index=4 ‘lead=cd p‘

+ [[ 4 -gt 0 ]]

+ [[ -n cd p ]]

+ [[ -n cdp ]]

+ cur=‘cd p‘

+ (( i = 0 ))

+ (( i <= cword ))

+ [[ 4 -ge 2 ]]

+ [[ cd != \c\d ]]

+ [[ 0 -lt 1 ]]

+ local old_size=4

+ cur=‘ p‘

+ local new_size=2

+ index=2

+ (( ++i ))

+ (( i <= cword ))

+ [[ 2 -ge 1 ]]

+ [[ != \p ]]

+ cur=p

+ (( index-- ))

+ [[ 1 -ge 1 ]]

+ [[ p != \p ]]

+ [[ 1 -lt 1 ]]

+ (( ++i ))

+ (( i <= cword ))

+ [[ -n p ]]

+ [[ ! -n p ]]

+ [[ 1 -lt 0 ]]

+ local words cword cur

+ _upvars -a2 words cd p -v cword 1 -v cur p

+ (( 10 ))

+ (( 10 ))

+ case $1 in

+ [[ -n 2 ]]

+ printf %d 2

+ [[ -n words ]]

+ unset -v words

+ eval ‘words=("${@:3:2}")‘

++ words=("${@:3:2}")

+ shift 4

+ (( 6 ))

+ case $1 in

+ [[ -n cword ]]

+ unset -v cword

+ eval ‘cword="$3"‘

++ cword=1

+ shift 3

+ (( 3 ))

+ case $1 in

+ [[ -n cur ]]

+ unset -v cur

+ eval ‘cur="$3"‘

++ cur=p

+ shift 3

+ (( 0 ))

+ [[ -n cur ]]

+ upvars+=("$vcur")

+ upargs+=(-v $vcur "$cur")

+ [[ -n cword ]]

+ upvars+=("$vcword")

+ upargs+=(-v $vcword "$cword")

+ [[ -n prev ]]

+ [[ 1 -ge 1 ]]

+ upvars+=("$vprev")

+ upargs+=(-v $vprev "${words[cword - 1]}")

+ [[ -n words ]]

+ upvars+=("$vwords")

+ upargs+=(-a${#words[@]} $vwords "${words[@]}")

+ (( 4 ))

+ local cur cword prev words

+ _upvars -v cur p -v cword 1 -v prev cd -a2 words cd p

+ (( 13 ))

+ (( 13 ))

+ case $1 in

+ [[ -n cur ]]

+ unset -v cur

+ eval ‘cur="$3"‘

++ cur=p

+ shift 3

+ (( 10 ))

+ case $1 in

+ [[ -n cword ]]

+ unset -v cword

+ eval ‘cword="$3"‘

++ cword=1

+ shift 3

+ (( 7 ))

+ case $1 in

+ [[ -n prev ]]

+ unset -v prev

+ eval ‘prev="$3"‘

++ prev=cd

+ shift 3

+ (( 4 ))

+ case $1 in

+ [[ -n 2 ]]

+ printf %d 2

+ [[ -n words ]]

+ unset -v words

+ eval ‘words=("${@:3:2}")‘

++ words=("${@:3:2}")

+ shift 4

+ (( 0 ))

+ _variables

+ [[ p =~ ^(\$\{?)([A-Za-z0-9_]*)$ ]]

+ return 1

+ [[ p == @(?([0-9])?(>)|>&)* ]]

+ [[ cd == @(?([0-9])?(>)|>&) ]]

+ local i skip

+ (( i=1 ))

+ (( i < 2 ))

+ [[ p == @(?([0-9])?(>)|>&)* ]]

+ i=2

+ (( 1 ))

+ (( i < 2 ))

+ [[ 1 -le 0 ]]

+ prev=cd

+ [[ -n ‘‘ ]]

+ return 0

+ local ‘IFS=

‘ i j k

+ compopt -o filenames

+ [[ -z ‘‘ ]]

+ _filedir -d

+ local i ‘IFS=

‘ xspec

+ _tilde p

+ local result=0

+ [[ p == \~* ]]

+ return 0

+ local -a toks

+ local quoted x tmp

+ _quote_readline_by_ref p quoted

+ ‘[‘ -z p ‘]‘

+ [[ p == \‘* ]]

+ [[ p == \~* ]]

+ printf -v quoted %q p

+ [[ p == *\\* ]]

+ [[ p == \$* ]]

++ compgen -d -- p

+ x=pub_work

+ read -r tmp

+ toks+=("$tmp")

+ read -r tmp

+ [[ -d != -d ]]

+ [[ -n ‘‘ ]]

+ [[ 1 -ne 0 ]]

+ compopt -o filenames

+ COMPREPLY+=("${toks[@]}")

+ return 0

ub_work/

+ cd pub_work/

[email protected]:pub_work$

原来是开启了脚本调试功能,关闭就好啦;

用于脚本调试。set是把它下面的命令打印到屏幕

set -x 是开启 set +x是关闭 set -o是查看 (xtrace),set去追中一段代码的显示情况。

执行set -x后,对整个脚本有效。

原文:.html

发布评论

评论列表 (0)

  1. 暂无评论