상황에 맞는 bash 완성으로 와일드카드 동작 변경

상황에 맞는 bash 완성으로 와일드카드 동작 변경

그 과정에서 mv 또는 rm과 같은 명령에서 와일드카드를 사용한 후 Tab을 두 번 누르는 습관이 생겼습니다. 그러면 기본적으로 bash가 와일드카드 확장과 일치하는 파일 목록을 표시하게 됩니다. 예를 들어:

  {~/bin}-> ls p*<TAB>
  pnuke         pscp          pssh          
  prsync        pslurp        pssh-askpass  

그러나 Debian Jessie에서 bash_completion 패키지를 사용하면 이 동작이 변경되며, 파일 이름을 완성할 때 기본 동작은 모든 와일드카드 문자를 확장명과 일치하는 첫 번째(첫 번째만) 파일로 바꾸는 것입니다. bash_completion이 설치된 상태에서 위와 동일한 예를 사용하면 탭을 클릭한 후 명령줄이 다음과 같이 변경됩니다.

  {~/bin}-> ls pnuke

이 상황에서 bash가 취할 수 있는 모든 가능한 조치 중에서 이것이 가장 쓸모없는 것 같습니다. 파일 이름이 아닌 콘텐츠를 완성할 때 bash_completion이 제공하는 다른 모든 이점을 계속 얻으면서 기본 readline 파일 완성 동작을 복원할 수 있는 방법이 있습니까? 아니면 기본 동작이 아닌 경우 최소한 유용한 작업을 수행하도록 만들 수 있나요? (아무것도 하지 않는 것조차도 이보다 더 도움이 될 것입니다.)

답변1

ls p+ Tab대신 + 를 입력하면 ls p*원하는 동작을 얻을 수 있다는 것을 알고 계셨습니까 Tab?

또는 ls p*+ Alt - !또는 ls p*+ Ctrl - x+ 를 입력할 수 있습니다 !.

Alt - !합계 Ctrl - x+ 는 다음과 !같아야 합니다.전체 명령그리고가능한 명령 완성, 각각. Tab다음으로 다시 바인딩할 수 있습니다 .전체 명령통과하다 bind '\C-i:complete-command'. 이렇게 하면 원하는 글로벌 확장이 제공되지만 다른 작업의 완료가 엉망이 될 수 있습니다.

더 나은 해결책이 있기를 바랍니다. 이 변경 사항을 도입한 Bash 버전을 알고 있다면 해당 버전을 찾을 가능성이 더 높습니다.

답변2

Bash 버전은 그다지 관련성이 없으며, 이 동작은 bash-completion(별도 프로젝트)의 일부입니다.

이 패키지를 제거하거나 해당 구성 파일을 편집하면 원하는 기본 동작이 제공됩니다.

관련 정보