
Bash나 zsh에서 표준 탭 완성 기능을 사용할 때는 파일 이름이나 경로의 첫 부분을 입력한 다음 키를 눌러 단어를 완성합니다. 파일 이름의 모든 변형이 단어 끝에 있는 파일로 가득 찬 디렉토리에 있지 않는 한 이것은 잘 작동합니다. 예를 들어 모두 동일한 접두사로 시작하는 타임 스탬프 파일로 가득 찬 디렉토리:
foo-20120701124501.log
foo-20120701124531.log
foo-20120701124601.log
foo-20120701124631.log
foo-20120701124701.log
foo-20120701124731.log
이 경우 입력하면 foo<tab>
-- foo-20120701124
다시 탭하여 모든 파일을 볼 수 있습니다... 고유한 파일 이름을 얻으려면 다음 3자를 입력해야 합니다.
4731.log
예를 들어 입력 한 다음 단어의 시작 부분을 완성하는 방법이 있는지 궁금합니다 . 나는 이것이 bash에서 어려울 것이라고 추측합니다. 왜냐하면 bash 완성은 프로그래밍 가능한 완성을 위해 $COMP_CWORD
및 를 사용하기 때문 $COMP_KEY
입니다. 그리고 내가 읽는 방식으로 볼 때 왼쪽 단어 완성을 허용하지 않을 것이라고 생각합니다. 나는 매뉴얼 페이지에서 어디를 찾아야 할지 알기 위해 zsh 내부의 완성에 대해 충분히 알지 못합니다.
답변1
이는 탭을 누르기 전에 선행 명령이 있는 경우에만 작동합니다. 아마도 당신이 찾고 있는 것은 아닐 것입니다. 그러나 유일한 것은 내가 원하는 결과를 얻을 수 있다는 것이었습니다. 아래 예제는 귀하의 경우에 작동합니다. *4731.log 끝에 가서 탭을 한 번 누르기만 하면 됩니다. 고유한 경우 자동 완성됩니다.
ls *4731.log