지능형 완료가 실패하는 경우 강제 Bash 일반 탭 완료

지능형 완료가 실패하는 경우 강제 Bash 일반 탭 완료

탭 완성 기능이 쉘의 표준 기능이 된 이후로 저는 이 기능을 매우 기쁘게 사용하고 있습니다. 나는 Bash의 지능적인 완성 기능(evince foo<TAB>을 입력하면 PDF 파일만 검색하는 기능)도 좋아합니다.

Bash가 지능형 완성 기능을 사용하여 완료를 거부하면 행복한 하루가 망가집니다.

오늘 나는 다음을 원했다:

tar xvf centos5.8_x86_1.ova

그래서 나는 다음을 입력했습니다.

tar xvf cent<TAB>

.ova-files는 일반적으로 tar와 함께 사용하는 것이 아니기 때문에 Bash는 경로 완성을 거부합니다.

bash-completion 패키지를 제거하여 지능형 완성 기능을 제거할 수 있다는 것을 알고 있습니다. 그런데 케이크도 먹고 먹어도 될까요?

bash에 먼저 지능형 완성을 사용하도록 요청하고, 이것이 실패하면 비지능형 완성을 사용할 수 있습니까?

답변1

다음은 tar, vim 및 emacs 프로그램에 대한 모든 '지능형' 완료가 실패한 후 정상적인 bash 완료를 켜야 합니다.

compopt -o bashdefault tar vim emacs

또한 참조하십시오관련 페이지온라인 bash 매뉴얼에서.

주의 사항: 현재 명령에 대한 지능형 완성으로 정의된 완성 유형(명령/파일 이름/사용자 이름 등)에 대한 정상적인 동작을 얻습니다. 예를 들어 service를 호출하더라도 에 대한 완성은 파일 이름을 완성하지 않습니다 complete -o bashdefault service.

이 경우와 지능형 자동 완성이 실패하는 다른 경우에는 언제든지 Alt-/(또는 M-/bash 매뉴얼의 표기법에서)를 눌러 완료 할 수 있습니다.파일 이름M-/지능형 완성이 비활성화된 경우 TAB이 작동하는 것과 거의 같은 방식입니다( 와 같은 패턴을 완성하지 않는다는 점에서 거의 같은 방식 *.txt). 보다여기명령 및 사용자 이름과 같은 다른 유형의 완성에 대한 키 시퀀스의 경우.

답변2

헤즈 올레 :-),

케이크를 먹고 먹기도 합니다:

<tab>완료 시 bash의 최선의 추측을 제공합니다. 아시다시피 때로는 잘못된 경우도 있습니다.

그러나 덴마크어 키보드의 M-/( ALT++ (그리고 오른쪽이 아닌 왼쪽 ) ) SHIFT은 bash의 완성이 완벽하지 않은 경우 파일로 강제로 완성됩니다. 그래서 강제로 파일로 완성하고 싶을 때 사용합니다 .7ALTAltGrM-/

나에게는 그것이 두 세계의 최고입니다.

답변3

bash 완성은 bash의 표준 완성의 확장이며 그 자체가 bash 프로그램입니다. 따라서 프로그램 작동 방식을 변경하려면 변경하면 됩니다. 이것은 무료 소프트웨어이므로 자유롭게 사용할 수 있습니다. 특정 tar명령의 경우 파일은 /usr/share/bash-completion/completions/tar. tar확장자가 있는 파일을 자동 완성하려면 해당 ova줄에 추가하면 됩니다.

local tars='@(@(tar|gem|spkg)?(.@(Z|[gx]z|bz?(2)|lzma))|t@([glx]z|bz?(2)))'

그래서 말한다

local tars='@(@(tar|gem|spkg|ova)?(.@(Z|[gx]z|bz?(2)|lzma))|t@([glx]z|bz?(2)))'

이는 Debian Wheezy(현재 안정 버전)에 존재하는 경로 및 코드입니다. 다른 배포판이나 버전은 다른 코드를 가질 수 있지만 아이디어는 동일합니다. 코드를 열고 원하는 작업을 수행하도록 조정하세요.

편집: 방금 질문이 일치하는 항목을 찾지 못할 때마다 발생하고 ova에 추가하는 특정 사례뿐만 아니라 tar. 어쩌면 누군가가 소스를 어디서 찾을 수 있는지 아는 것이 여전히 유용할 수 있습니다.

관련 정보