open
는 일반적인 파일 열기 이므로 일반적인 완성 은 열 수있는 open
모든 항목과 일치해야합니다 open
. 한 가지 해결 방법은, 새로운 명령 이름을 발명하는 것입니다 alias
로 open
, 다음 새 명령은 PDF 파일을 작성하도록 지정합니다.
bash-4.4$ alias viewpdf=open
bash-4.4$ complete -f -X '!*.@(pdf|PDF)' viewpdf
그런 다음 viewpdf
PDF 파일을 탭-완전-열기에 사용할 수 있습니다. 그러나 디렉토리 경로로 규정되지 않은 파일 이름과 만 일치하므로 다소 불완전합니다. 더 복잡하게 :
alias viewpdf=open
function _viewpdf()
{
local word=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=($(compgen -f -X "!*.@(pdf|PDF)" -- "${word}"))
}
complete -d -X '.[^./]*' -F _viewpdf viewpdf
어느로 저장해야 rc 파일 .bash
대신 Z-Shell을 사용 zsh
하면 완성이 다음과 같이 보일 수 있습니다.
REVERT=$options[COMPLETE_ALIASES]
setopt COMPLETE_ALIASES
alias viewpdf=open
compdef '_files -g "*.(pdf|PDF)"' viewpdf
options[COMPLETE_ALIASES]=$REVERT
unset REVERT
complete
명령 에만 의존한다는 것을 올바르게 보았습니까 ?