특정 파일 이름을 제외하도록 bash 자동 완성 규칙 수정

특정 파일 이름을 제외하도록 bash 자동 완성 규칙 수정

vi특정 파일 이름(예: files )을 제외하도록 기존 bash 자동 완성 규칙을 수정하고 싶습니다 config.log. 나는 FIGNORE성공하지 못한 채 환경 변수를 사용해 보았습니다 . 기본 제공 규칙을 사용하면 complete기존 규칙을 수정하는 대신 덮어씁니다.

이를 수행할 수 있는 방법이 있습니까?

답변1

Bash 완료에서 쓸모 없는 파일 이름이나 확장자를 제외하려면 .bashrc 파일에 다음 줄을 추가하세요.

FIGNORE=".log:.dvi:.pdf:"

답변2

다음 명령을 사용하여 현재 구성을 볼 수 있습니다.

complete -p vi
complete -o bashdefault -o default -o filenames -o nospace -F _exp_ vi

그리고 사용된 쉘 함수의 정의

type _exp_

결과를 필터링할 수 있는 complete기능/옵션이 있습니다 . -X문제는 이것이 complete액션에서만 작동한다는 것입니다. 결과 가 작동하지 않습니다 -o default(모르겠어요 -o bashdefault).

구성 요소를 변경할 수 있습니다.

complete -d -f -o filenames -o nospace -F _exp_ -X '@(config.log|config.doc)' vi

안타깝게도

  1. -X통화에는 하나만 있을 수 있습니다 complete(이전 통화는 덮어쓰게 됩니다).

  2. 작동하려면 위의 내용이 필요합니다 shopt -s extglob. 그렇지 않으면 이름이나 패턴( "*.log") 만 사용할 수 있습니다.

관련 정보