bash 탭 완료는 어떻게 작동합니까?
요즘 쉘에서 많은 시간을 보내고 있는데 탭이 어떻게 작동하는지 궁금해요.그 뒤에 있는 메커니즘은 무엇입니까?bash는 어떻게 모든 디렉토리의 내용을 알 수 있습니까?
자동 완성에는 다음 두 가지 부분이 있습니다.
readline 라이브러리는 fixje에서 이미 언급한 바와 같이 명령줄 편집을 관리하고 탭을 누르면 bash를 호출하여 완료를 가능하게 합니다.그런 다음 Bash는 가능한 완료 목록(다음 포인트 참조)을 제공하고 이미 입력된 문자에 의해 명확하게 식별된 만큼의 문자를 리드라인에 삽입합니다(자세한 내용은 Bash 매뉴얼의 "명령줄 편집" 섹션을 참조하십시오).
Bash 자체에는 내장되어 있습니다.
complete
명령어별로 완료 메커니즘을 정의합니다.현재 명령어가 정의되어 있지 않은 경우 파일명으로 완료를 사용합니다(Ignacio가 말한 것처럼 opendir/readdir 사용).자체 완료를 정의하는 부분은 프로그래밍 가능한 완료 섹션에 설명되어 있습니다.요컨대
complete «options» «command»
명령어 완료를 정의합니다.예를들면complete -u su
는 명령어 인수를 완료할 때 현재 시스템의 사용자를 검색하도록 지시합니다.이것이 일반 옵션보다 복잡한 경우(인수 인덱스에 따라 다른 완료 또는 이전 인수에 따라 다름)를 사용할 수 있습니다.
-F function
그런 다음 셸 함수를 호출하여 가능한 완료 목록을 생성합니다.(예를 들어, 이것은 매우 복잡한 git 완료에 사용됩니다.서브커맨드에 따라서는 옵션도 있고, 브랜치명(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
'programing' 카테고리의 다른 글
Swift를 사용하여 자리 표시자 문자 색상 변경 (0) | 2023.04.11 |
---|---|
목표 C++란? (0) | 2023.04.11 |
숫자 열을 합산하는 Bash 명령어 (0) | 2023.04.11 |
공식에서 셀의 값을 셀 참조로 사용하는가? (0) | 2023.04.11 |
스토리보드의 사용자 지정 셀 행 높이 설정이 응답하지 않습니다. (0) | 2023.04.11 |