[unix] TAB 자동 완성 기능은 어떻게 완료 옵션을 찾습니까?

그리고 어떻게 별칭을 자동 완성합니까?



답변

명령에 따라

  • 누군가 옵션을 포함하여 가능한 인수 인수를 생성하는 함수를 작성했을 수 있습니다. 일부 명령의 기능 /etc/bash_completion.d/*(또는 일부 시스템의 다른 위치)이 있습니다. 이 함수들은 내장으로 등록 되어 있습니다 (예를 들어 bash 는 명령 을 누를 때 함수 를 호출하도록 지시합니다 ). 그들은 내장을 사용하여 배쉬에게“가능한 완성이있다”고 말한다.complete complete -F _find find_findTabfindcompgen
  • 일부 명령의 경우 bash는 인수 --help와 함께 명령을 호출 하고 출력을 구문 분석합니다. 이러한 명령은 complete내장에 등록 할 수 있습니다 ( 예 🙂 complete -F _longopt ls. _longopt사실 완성 목록 함수는 고정 목록을 사용하지 않고 명령의 출력을 구문 분석합니다. (가능한 완료를 생성하기 위해 명령의 출력을 구문 분석하는 다른 특수 완료 함수가 /etc/bash_completion.d/*있습니다. 예를보십시오.)
  • 별명과 같은 경우 완료 함수는 bash의 내부 테이블에서 별명을 찾습니다. complete내장은 옵션, 예를 들어,이 -A별칭을.

답변

파일을 봐

/ etc / bash_completion

디렉토리에서 파일을 관찰하십시오.

/etc/bash_completion.d

답을 찾을 수 있습니다.


답변

bash 완성 지원은 bash 완성 패키지에 의해 Debian과 Ubuntu에서 제공 됩니다 . 또한 일반적으로 다음을 주석 해제 /etc/bash.bashrc하거나 .bashrcbash 완성 파일을 소싱해야합니다. 다음은 다음과 같습니다 /etc/bash.bashrc.

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

이 작동합니다. 나는 보통 둘 다 주석 처리를 제거합니다. 데비안에서 대화식 / 로그인 쉘을 다루는 것은 약간의 혼란입니다.

비슷한 의견은 아마도 다른 배포판에도 적용되지만 기본적으로 소싱을 활성화 할 수도 있습니다.


답변