Bash 완료를 어떻게 얻을 수 있나요?

Bash 완료를 어떻게 얻을 수 있나요?

bash에서 가능한 모든 명령 완성 목록(명령을 입력한 다음 탭을 눌렀을 때 제공되는 목록)을 인쇄(예: stdout으로)할 수 있는 좋은 방법이 있습니까?

편집: 지금 다시 읽어보니 내용이 명확하지 않은 것 같습니다. 수동으로 완료하는 방법을 알고 있습니다. 프로그래밍 방식으로 수행하고 싶습니다.

답변1

bash에는 정확히 이를 수행하는 기능이 없습니다. 프로그래밍 가능한 완성은 커서 위치와 같은 다양한 매개변수에 크게 의존합니다.

eval $(complete -p 'git' | sed s/^complete/compgen/)

것 같다작동하지만 매우 취약합니다.

답변2

두 번 누르세요 TAB. 대부분의 BASH와 유사한 쉘은 주어진 하위 문자열에 대해 일치하는 모든 자동 완성 옵션을 나열합니다.

예를 들어

root@host$apt-get up

TAB이 명령을 두 번 누르면 UpdateUpgrade

답변3

패키지가 설치되어 있는지 확인하십시오 bash-completion. 설치 유형에 따라 또는 으로 가져오지 않는 한 기본적으로 포함되거나 포함되지 않을 수 yum있습니다 apt. 설치 후에는 로그아웃했다가 다시 로그인하거나 리소스를 확보해야 .bashrc사용할 수 있습니다.

@Amazed는 그것을 사용하는 방법에 대해 정확히 알고 있습니다.

답변4

당신이 요구하는 것은 기본적으로 주어진 문자열로 시작하는 모든 명령의 목록이라고 생각합니다. 시스템의 모든 실행 파일 목록을 가져와서 grep을 통해 실행하면 됩니다.

관련 정보