_expand는 무엇을합니까?


12

나는 껍질을 가지고 일하고 있었고 실수로 tab글을 쓴 후 자동 완성되어 _e결과를 얻었습니다 _expand.

이 명령은 무엇을합니까? Ask Ubuntu에서 온라인으로 설명을 찾을 수 없었습니다.

그러나 그들은 내 질문에 대답하지 않습니다. 대신, 그들은 같은 명령에 대해 같은 종류의 질문을 더 열고 _complete, _complete_as_root

답변:


14

_expand입력 할 때 무엇을하는지 알 수 있습니다

$ type _expand
_expand is a function
_expand ()
{
    if [[ "$cur" == \~*/* ]]; then
        eval cur=$cur;
    else
        if [[ "$cur" == \~* ]]; then
            cur=${cur#\~};
            COMPREPLY=($( compgen -P '~' -u "$cur" ));
            [ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]};
            return ${#COMPREPLY[@]};
        fi;
    fi
}

이것은 bash 완료 메커니즘의 기능입니다. ~경로 이름에서 물결표 ( )를 확장 합니다. In /etc/bash_completion은 함수에 대한 주석입니다.

# 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.

터미널에서 사용해보십시오.

~<tab><tab>

예를 들어 사용자 이름으로 확장됩니다.

~usera     ~userb     ~userc

1
고마워, 나는 명령을 몰랐다 type. 왜 이러한 함수를로 호출 할 수 없는지 명확하지 _function_name [argument]않았지만 이제는 자동 완성 확장의 목적으로 사용되며 자동 완성에 나타나는 사실은 단순히 선언 된 것이기 때문입니다. 직접 호출).
scristalli

3
정확히 _expand다른 함수와 마찬가지로 함수 는 완료 패턴이 포함 COMPREPLY된 값을 기준으로 배열을 조작합니다 $cur.
혼돈
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.