특정 명령은 탭 자동 완성 조건을 어떻게 변경합니까?

특정 명령은 탭 자동 완성 조건을 어떻게 변경합니까?

내가 다음과 같은 디렉터리에 있다고 가정해 보겠습니다.

:내 디렉토리 $ls

foo.txt

그게 유일한 문서입니다. 이와 같은 내용을 입력한 cat다음 Tab 키를 누르면 자동 완성됩니다(‸ 문자가 실제로 캐럿 위치이고 이 목적에 사용되는 문자가 아니라고 가정)...

:내디렉토리$ 고양이‸

(다시 말하지만 ‸는 문자가 아니라 캐럿입니다)로 변경합니다...

:mydirectory$ 고양이 foo.txt ‸

그러나 다음과 같은 명령의 경우에는 다릅니다.

:내 디렉토리 $tar ‸

탭을 클릭하면 자동 완성 옵션이 표시됩니다.

A c d r t u x

다음과 같이 작성할 때:

:내디렉토리$ tar -zxvf ‸

그러면 아무것도 자동으로 수행되지 않습니다.

내 질문예: Bash에서 자동 완성 규칙을 변경하는 방법에 대한 많은 명령이 있습니까?

답변1

이 명령은 자동 완성 규칙을 변경하지 않습니다. 자동 완성 규칙은 스크립트와 함수를 사용하여 셸에 대해 정의되고 셸이 시작될 때 로드됩니다. bash다른 쉘보다 더 익숙하기 때문에 이것을 예로 사용하겠습니다 .

in의 자동 완성 규칙은 bashin 스크립트에 정의되어 /etc/bash_completion있으며 디렉토리의 다른 스크립트로 보완됩니다 /etc/bash_completion.d/. 이러한 규칙은 bash로그인할 때 획득됩니다.

bashcomplete완성 규칙을 쉽게 정의할 수 있는 명령어 가 있습니다 . 정의된 모든 규칙을 보려면 를 실행할 수 있습니다 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

관련 정보