Otwórz plik PDF z terminala za pomocą komendy

0

Jestem przyzwyczajony do linuksowego sposobu otwierania pliku PDF z terminala. Oznacza to, że np evince sample.pdf. Wykonanie polecenia sprawia, że ​​jest to dość szybkie. W szczególności, gdy istnieje wiele plików o tej samej nazwie, ale z różnymi zakończeniami (jak po kompilacjach pdflatex). Z Macports mam bash-complete, ale jest to nieskuteczne dla openpolecenia w tym sensie, że muszę przełączać wszystkie pliki, dopóki nie otrzymam pliku PDF. Czy istnieje inny sposób otwarcia pliku PDF, który pozwala zastosować uzupełnianie bash? Lub sposób na openzignorowanie niektórych typów plików?

użytkownik254985
źródło

Odpowiedzi:

3

openjest ogólną funkcją otwierającą pliki, więc ogólne uzupełnienie openmusi pasować do wszystkiego, co openmożna otworzyć. Jednym rozwiązaniem jest wymyślić nową nazwę polecenia, aliasgo open, a następnie określić, że nowa komenda powinna zakończyć plików PDF.

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

Następnie można użyć viewpdfdo pełnego otwarcia plików PDF. Jest to jednak raczej niekompletne, ponieważ pasuje tylko do nazw plików niekwalifikowanych do dowolnej ścieżki katalogu. Bardziej złożona:

alias viewpdf=open
function _viewpdf()
{
   local word=${COMP_WORDS[COMP_CWORD]}
   COMPREPLY=($(compgen -f -X "!*.@(pdf|PDF)" -- "${word}"))
}
complete -d -X '.[^./]*' -F _viewpdf viewpdf

Które powinny być zapisane na w bashpliku rc .

Jeśli zamiast tego użyjesz Z-Shell, zshzakończenie może wyglądać

REVERT=$options[COMPLETE_ALIASES]
setopt COMPLETE_ALIASES
alias viewpdf=open
compdef '_files -g "*.(pdf|PDF)"' viewpdf
options[COMPLETE_ALIASES]=$REVERT
unset REVERT
gałązka
źródło
Dzięki za odpowiedź, @thrig. Wyjaśnij: działa to analogicznie do tego , prawda? Czy widzę to poprawnie, że nie opiera się to na zakończeniu bash-macports, ale jedynie na completepoleceniu.
user254985
tak, ale musisz upewnić się, że korzystasz z nowoczesnej wersji, basha nie starej Apple, która jest /bin
wysyłana