Bash 완성: 항상 모든 파일 표시

Bash 완성: 항상 모든 파일 표시

최근에 (홈브류를 통해) 설치했습니다 bash-completion. 이제 완료 목록에서 파일이 생략됩니다.원하다다음과 같은 유효한 옵션을 완전히 생략합니다.

[alex@mbp foo]$ ls
bar.csv foo.csv
[alex@mbp foo]$ sh ../dosomething.sh fo<TAB>
((nothing shown))

명령줄을 많이 사용하는 사용자로서 이는 매우 짜증나는 일입니다. 누구든지 이 동작을 비활성화하는 방법을 말해 줄 수 있습니까? 문서나 Google에서 유용한 것을 찾을 수 없습니다.

배쉬 완성자주하는 질문말한다:

Q. bash 완료 코드는 일부 명령이 내 환경에서 합법적인 확장자를 가진 파일을 완료하는 것을 금지합니다. 필요한 파일을 완료하려면 해당 명령에 대한 완료를 비활성화해야 합니까?

A. 아니요. M-/를 사용하여 (bash 매뉴얼 페이지의 단어대로) 커서 왼쪽에 있는 텍스트에서 파일 이름 완성을 시도합니다. 이는 bash 완성 코드에 의해 설정된 파일 형식 제한을 우회합니다.

그러나 이것은 나에게 허용되는 솔루션이 아닙니다. 확장자가 파일에 유효한지 여부에 관계없이 "TAB"이 모든 파일/디렉토리를 표시하기를 원합니다(이것이 지난 20년 동안 나에게 잘 작동했던 방식입니다).

어떻게 이를 달성할 수 있나요?

전역 완성 스크립트를 삭제하는 것보다 .bashrc/ 설정을 선호합니다 . .bash_profile현재 bash-completion을 포함하는 방법은 다음과 같습니다(단지 기본 홈브루 설치일 뿐입니다).

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

업데이트: 나는 이것을 본 적이 있습니다Bash 파일 이름 탭 완성하지만 지구/내 시스템에서 가능한 모든 파일 확장자에 대해 너무 많은 수동 작업이 필요하기 때문에 내가 원하는 것은 아닙니다.

답변1

TAB허용된 답변은 전체 파일 이름에 포함되지 않았기 때문에 명령 완성(예: Python을 얻기 위한 "pyt+" 등)을 중단하므로 문제를 실제로 해결하지 못합니다 .

complete -o default python

이렇게 하면 모든 명령(이 예에서는 "python"만)의 문제가 해결되지는 않지만, 심하게 오작동하는 특정 명령의 경우에는 문제가 해결됩니다. 불행하게도 모든 것에 "기본값"(예: Readline의 기본값)을 설정하는 깔끔한 방법은 없는 것 같습니다. 사용하는 모든 명령마다 설정을 완료해야 합니다. 또는 위의 .inputrc 해결 방법을 사용하세요.

답변2

이것 때문에 짜증이 나서 bash 매뉴얼을 읽었습니다. 나는 이것을 파일로 사용하여 원하는 동작을 달성할 수 있다고 믿습니다 ~/.inputrc.

TAB: complete-filename
M-/: complete

전체 규칙 모음을 사용하는 일반 완성은 에 매핑되고 Meta-/파일 이름만 완성은 에 매핑됩니다 TAB.

관련 정보