답변:
이것은 / etc / bash_completion에 의해 제어됩니다
확장 코드가 마음에 들지 않으면 _expand ()에서 확장 코드를 주석 처리 할 수 있습니다.
다음은 fedora 17의 내 버전이지만 유사해야합니다.
# This function expands tildes in pathnames
#
_expand()
{
# FIXME: Why was this here?
#[ "$cur" != "${cur%\\}" ] && cur="$cur\\"
# Expand ~username type directory specifications. We want to expand
# ~foo/... to /home/foo/... to avoid problems when $cur starting with
# a tilde is fed to commands and ending up quoted instead of expanded.
if [[ "$cur" == \~*/* ]]; then
eval cur=$cur
elif [[ "$cur" == \~* ]]; then
cur=${cur#\~}
COMPREPLY=( $( compgen -P '~' -u "$cur" ) )
[ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]}
return ${#COMPREPLY[@]}
fi
}
function _expand() { :;}
내에 를 정의하여 내 문제를 "수정" 했습니다 ~/.bashrc
.
bash
특정 명령에 대해보다 정교한 자동 완성 기능을 제공 할 수 있습니다 (예 : 파일 이름 이외의 자동 완성 프로그램 인수). 시스템에 명령에 대해 이러한 프로그래밍 가능 완료 기능이 정의 vim
되어 있습니다.
complete
명령 프롬프트에 입력 하면 자동 완성 기능을 제공하는 데 사용되는 기능이 표시됩니다 bash
.
$ complete
complete -o default -F _complete_open open
type function_name
정의에 대해 배우려면 입력하십시오 .
$ type _complete_open
_complete_open is a function
_complete_open ()
{
# function definition
}
함수가 정의 된 위치를 찾습니다. 다음을 사용하십시오.
$ shopt -s extdebug
$ declare -F _complete_open
_complete_open 70 /Users/danielbeck/.bash_profile