나는 내 문제를 설명하기 위해 생각할 수 있는 가장 간단한 코드를 생성했습니다.
".cc"로 끝나는 파일을 처리하기 위해 "foo" 명령을 사용한다고 가정해 보겠습니다.
complete -G '*.cc' foo
이제 내 현재 디렉토리에 "foo.cc", "bar.cc" 및 "blah.cc"가 포함되어 있다고 가정해 보겠습니다. "foo"를 입력하고 Tab 키를 누르면 다음과 같은 결과가 나타납니다.
$ foo <tab><tab>
bar.cc blah.cc foo.cc
$ foo
이것이 내가 기대했던 것입니다. 하지만 첫 번째 문자 "b"를 입력하고 다시 시도하면 다음과 같습니다.
$ foo b<tab><tab>
bar.cc blah.cc foo.cc
$ foo b
-W처럼 "b"로 시작하는 결과로 필터링하지 않습니다.
찾을 수 있는 모든 것을 검색했지만 complete -G
내 요구 사항에 맞는 예를 찾지 못했습니다. 이것이 일반적인 것이라고 확신합니다. 여기서 모범 사례는 무엇입니까?
답변1
알았어, 답을 찾았어bash 완료에 패턴을 추가하는 방법(압축 해제용)은 무엇입니까?
요약: "-G"는 거의 쓸모가 없습니다. 가장 좋은 방법은 "-f"를 사용하여 모든 파일을 일치시킨 다음 -X '!*.cc'를 사용하여 원하지 않는 파일을 제외하는 것입니다. 그런 다음 좋은 결과를 얻으려면 "-o plusdirs"를 추가하세요.