명령 완성을 사용하여 터미널에서 PDF 열기


0

터미널에서 PDF를 여는 리눅스 방식에 익숙합니다. 즉, 예를 들어 evince sample.pdf. 명령 완료는 이것을 매우 빠르게 만듭니다. 특히 이름은 같지만 엔딩이 다른 파일이 많은 경우 (pdflatex 컴파일 후) macports에서 bash-completion이 있지만 openPDF 파일을 얻을 때까지 모든 파일을 순환해야한다는 의미 에서 명령에는 효과적이지 않습니다 . bash-completion을 사용할 수있는 PDF를 여는 다른 방법이 있습니까? 또는 open특정 파일 형식 을 무시 하는 방법은 무엇입니까?

답변:


3

open는 일반적인 파일 열기 이므로 일반적인 완성 은 열 수있는 open모든 항목과 일치해야합니다 open. 한 가지 해결 방법은, 새로운 명령 이름을 발명하는 것입니다 aliasopen, 다음 새 명령은 PDF 파일을 작성하도록 지정합니다.

bash-4.4$ alias viewpdf=open
bash-4.4$ complete -f -X '!*.@(pdf|PDF)' viewpdf

그런 다음 viewpdfPDF 파일을 탭-완전-열기에 사용할 수 있습니다. 그러나 디렉토리 경로로 규정되지 않은 파일 이름과 만 일치하므로 다소 불완전합니다. 더 복잡하게 :

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

답장을 보내 주셔서 감사합니다, @thrig. 그냥 명확하게이가 아날로그 작동 오른쪽? 나는 이것이 macports bash-completion에 의존하지 않고 단지 complete명령 에만 의존한다는 것을 올바르게 보았습니까 ?
user254985

그렇습니다.하지만 bashApple이 제공하는 이전 버전이 아닌 최신 버전을 사용하고 있는지 확인해야합니다./bin
thrig
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.