내가 다음과 같은 디렉터리에 있다고 가정해 보겠습니다.
:내 디렉토리 $ls
foo.txt
그게 유일한 문서입니다. 이와 같은 내용을 입력한 cat
다음 Tab 키를 누르면 자동 완성됩니다(‸ 문자가 실제로 캐럿 위치이고 이 목적에 사용되는 문자가 아니라고 가정)...
:내디렉토리$ 고양이‸
(다시 말하지만 ‸는 문자가 아니라 캐럿입니다)로 변경합니다...
:mydirectory$ 고양이 foo.txt ‸
그러나 다음과 같은 명령의 경우에는 다릅니다.
:내 디렉토리 $tar ‸
탭을 클릭하면 자동 완성 옵션이 표시됩니다.
A c d r t u x
다음과 같이 작성할 때:
:내디렉토리$ tar -zxvf ‸
그러면 아무것도 자동으로 수행되지 않습니다.
내 질문예: Bash에서 자동 완성 규칙을 변경하는 방법에 대한 많은 명령이 있습니까?
답변1
이 명령은 자동 완성 규칙을 변경하지 않습니다. 자동 완성 규칙은 스크립트와 함수를 사용하여 셸에 대해 정의되고 셸이 시작될 때 로드됩니다. bash
다른 쉘보다 더 익숙하기 때문에 이것을 예로 사용하겠습니다 .
in의 자동 완성 규칙은 bash
in 스크립트에 정의되어 /etc/bash_completion
있으며 디렉토리의 다른 스크립트로 보완됩니다 /etc/bash_completion.d/
. 이러한 규칙은 bash
로그인할 때 획득됩니다.
bash
complete
완성 규칙을 쉽게 정의할 수 있는 명령어 가 있습니다 . 정의된 모든 규칙을 보려면 를 실행할 수 있습니다 complete -p
.
이제 대부분의 배포판에는 이미 이러한 규칙이 정의되어 있습니다. 따라서 를 입력하면 tar <TAB>
배포판에서 패턴 *.tar*
및 tar
명령 옵션과 일치하는 파일을 자동 완성 제안으로 표시하는 규칙을 정의했습니다. 그렇기 때문에 를 입력하면 tar
옵션이 제공되지만 A c d r t u x
의 경우 tar -zvxf
그 뒤에 다른 옵션이 없기 때문에 옵션이 제공되지 않습니다. 이제 해당 디렉토리에 파일을 출력하면 해당 옵션 다음의 파일이 tar 파일이기 .tar.gz
때문에 자동 완성 옵션으로 제안됩니다 .f
기본적으로 /etc/bash_completion
제안 사항 및 파일 형식은 필터링되지 않으므로 옵션이 제공되지 않습니다. 이 경우 foo.txt
파일이 제안으로 도 표시됩니다 tar
.
여기에서 자신만의 규칙을 만드는 방법을 읽어보세요.https://debian-administration.org/article/316/An_introduction_to_bash_completion_part_1그리고https://debian-administration.org/article/317/An_introduction_to_bash_completion_part_2