bash 탭 완성은 어떻게 작동합니까?
나는 최근에 쉘에서 많은 시간을 보냈고 탭 자동 완성이 어떻게 작동하는지 궁금합니다. 그 뒤에 메커니즘은 무엇입니까? bash는 모든 디렉토리의 내용을 어떻게 알 수 있습니까?
자동 완성에는 두 부분이 있습니다.
fixje에서 이미 언급 한대로 readline 라이브러리는 명령 행 편집을 관리하고 탭을 누르면 bash를 다시 호출하여 완료됩니다. 그런 다음 Bash는 가능한 완성 목록을 제공하고 (다음 요점 참조), readline은 이미 입력 한 문자로 명확하게 식별되는만큼의 문자를 삽입합니다. (readline 라이브러리를 상당히 많이 구성 할 수 있습니다. Bash의 명령 줄 편집 섹션을 참조하십시오. 자세한 내용은 설명서를 참조하십시오.)
Bash 자체에는
complete
개별 명령에 대한 완료 메커니즘을 정의하기위한 내장 기능이 있습니다. 현재 명령에 대해 아무것도 정의되어 있지 않으면 파일 이름으로 완료를 사용했습니다 (Ignacio가 말한 것처럼 opendir / readdir 사용).자신의 완성을 정의하는 부분은 프로그래밍 가능한 완성 섹션에 설명되어 있습니다. 요컨대,
complete «options» «command»
일부 명령에 대한 완료를 정의하십시오. 예를 들어complete -u su
말한다 의 인수 완료되면su
현재 시스템의 사용자를 검색, 명령을 .이것이 일반 옵션이 다룰 수있는 것보다 복잡한 경우 (예 : 인수 색인 또는 이전 인수에 따라 다른 완료)를 사용
-F function
하면 쉘 함수를 호출하여 가능한 완료 목록을 생성 할 수 있습니다. (이것은 예를 들어 git complete에 사용되며 하위 명령과 때로는 주어진 옵션에 따라 매우 복잡하며 때로는 브랜치 이름을 사용합니다 (bash는 알지 못합니다).
간단하게를 사용하여 현재 bash 환경에 정의 된 기존 완료를 나열하여 complete
가능한 것에 대한 인상을 줄 수 있습니다. bash-completion 패키지가 설치되어 있거나 시스템에 이름이 지정되어 있으면 많은 명령에 대한 완료가 설치되고 Wrikken이 말한 것처럼 /etc/bash_completion
bash 스크립트가 포함되어 있습니다.이 스크립트는 종종 셸 시작시 실행되어이를 구성합니다. 추가 사용자 정의 완료 스크립트가 /etc/bash_completion.d
; 그것들은 모두에서 제공됩니다 /etc/bash_completion
.
기본에 관심이 있다면 : Bash는 히스토리와 기본 완성 기능을 갖춘 readline 을 사용합니다 . 자세한 이해를 원하면 소스를 검사 할 수 있습니다. 또한 readline을 사용하여 완성 된 CLI 인터페이스를 구축 할 수 있습니다
참고 URL : https://stackoverflow.com/questions/5570795/how-does-bash-tab-completion-work
'IT박스' 카테고리의 다른 글
“알고리즘 디자인 매뉴얼”에 대한 솔루션은 어디에서 찾을 수 있습니까? (0) | 2020.08.02 |
---|---|
Windows 서비스 및 예약 된 작업 (0) | 2020.08.02 |
NSUserDefaults removeObjectForKey와 setObject : nil (0) | 2020.08.02 |
안드로이드 용 소프트 키보드를 개발하는 방법? (0) | 2020.08.02 |
Node.js 웹 애플리케이션 예제 / 튜토리얼 (0) | 2020.08.02 |