Czy w wierszu polecenia jest polecenie „otwórz za pomocą”?

24

Czy w wierszu polecenia można uzyskać zalecaną listę programów służących do otwierania określonego pliku na podstawie typu pliku? Na przykład .pdfplik miałby open with...zalecenie przy użyciu programów Evincei Document Viewer.

Używam wiersza poleceń do większości rzeczy, ale czasami zapominam nazwę programu, którego chcę użyć do otwarcia określonego typu pliku.

BTW Używam Ubuntu 13.10.

wskazówka

Dzięki wybranej poniżej odpowiedzi @slm stworzyłem następujący skrypt bash w pliku o nazwie openwith.sh:

xdg-mime query default $(xdg-mime query filetype $1)

Dodaj jako alias lub uruchom bezpośrednio jako openwithpolecenie.

modulitos
źródło
1
Możesz spróbować gnome-open file. Dodałem alias o='gnome-open'do mojej .bashrcuproszczenia.
Pål GD
gnome-opendziała podobnie do xdg-open.
slm
Najwyraźniej tak też jest gvfs-open. Pytanie Czego mogę użyć zamiast otwierać gnome? od ask ubuntu .
Pål GD

Odpowiedzi:

33

Nie ma polecenia, które kiedykolwiek widziałem, które działałoby jako „otwórz za pomocą ...”, ale możesz użyć tego polecenia, xdg-open <file>aby otworzyć dane <file>w aplikacji, która jest powiązana z danym typem pliku.

Przykłady

Otwieranie pliku tekstowego:

$ xdg-open tstfile.txt
$

Powoduje tstfile.txtto otwarcie pliku w gedit:

                         ss of gedit

Otwieranie dokumentu LibreOffice Writer:

$ xdg-open tstfile.odt 
$

Powoduje tstfile.odtto otwarcie pliku w Writer:

                         ss pisarza

Jakie aplikacje są używane?

Możesz użyć xdg-mimezapytania systemu, aby dowiedzieć się, jakie aplikacje są powiązane z danym typem pliku.

$ xdg-mime query default $(xdg-mime query filetype tstfile.txt)
gedit.desktop calibre-ebook-viewer.desktop

$ xdg-mime query default $(xdg-mime query filetype tstfile.odt)
libreoffice-writer.desktop calibre-ebook-viewer.desktop

Jest to operacja 2-etapowa. Najpierw pytam o typ MIME danego pliku xdg-mime query filetype tstfile.txt, który zwróci text/plain. Jest on następnie wykorzystywany do wykonania kolejnego wyszukiwania w celu znalezienia listy aplikacji powiązanych z tym typem MIME. Jak widać powyżej Mam 2 aplikacje związane, gedita calibrena .txtplikach.

Możesz także użyć xdg-mimedo zmiany powiązań. Zobacz man xdg-mimepo więcej szczegółów.

slm
źródło
Czy istnieje sposób wyświetlania innych rodzajów programów oprócz domyślnych? Na przykład właśnie zainstalowałem, okularaby wyświetlić pliki PDF, ale powyższy przykład pokazuje tylko, evincegdy uruchomię go na pliku .pdf.
modulitos
1
@Lucas - tak, przykłady, które pokazałem pokazują aplikacje powiązane z danym typem pliku powyżej. Np. pliki typu .txtsą powiązane na przykład z gedit i calibre.
slm
Czy muszę mieć .desktoppliki programów, które chcę umieścić na liście? Na przykład, kiedy uruchamiam skrypt na .pdfpliku, zwraca go evince.desktop, mimo że mogę również uruchomić okular.
modulitos
@Lucas - prawdopodobnie najlepiej jest to zadawać jako nowe Q, ponieważ odsuwamy się od pierwotnego Q.
slm
5

Jeśli pracujesz głównie w wierszu poleceń, możesz spojrzeć na oparty na przekleństwach menedżer plików, taki jak ranger lub vifm . Oba pozwalają zdefiniować domyślne akcje dla typów plików.

Na przykład w vifm ~/.vifm/vifmrcmożesz zdefiniować takie skojarzenia:

" Images
filetype *.jpg,*.jpeg,*.gif,*.tif,*.png,*.bmp sxiv 

" Media
filetype *.flv,*.avi,*.mp4,*.mpeg,*.mpg,*.mov,*.ogg,*.ogv,*.mkv mpv 

" Web
filetype *.html,*.htm,*.shtml /home/jason/Scripts/vimprobtab.sh 

" PDF
filetype *.pdf apvlv

Trafienie Enterkursorem dowolnego pliku za pomocą jednej ze zdefiniowanych akcji spowoduje jego otwarcie przez odpowiednią aplikację. Jak widać w przypadku .htmlplików, możesz uruchomić skrypt, a także aplikację.

jasonwryan
źródło
5

W pewnym sensie, ale w rezultacie zmieni domyślną aplikację. Nie jestem pewien, na jakich innych systemach operacyjnych to działa, ale poniższe instrukcje działają dla Ubuntu 12.04 - Desktop X86-64. Nie miałem pod ręką żadnych plików pdf, więc przetestowałem przy pomocy archiwum .zip.

Ogólne kroki

Krok 1

W typie terminala:

$ mimeopen -d /home/username/example.zip
zrzut ekranu # 1 = https://copy.com/qfWSZaZ4FzlA

    ss # 1

Krok 2

Wybierz z listy, wpisując żądaną #aplikację i naciskając enter. Plik zostanie natychmiast otwarty w wybranej aplikacji.

zrzut ekranu # 2 = https://copy.com/um6Rf7zRdceT

    ss # 2

zrzut ekranu # 3 = https://copy.com/ytwKCqR6nv8i

    ss # 3

Notatki

Notatka 1

Spowoduje to zmianę domyślnej aplikacji na wybraną przez Ciebie, a więc za każdym razem, gdy otworzysz ten typ pliku, będzie on otwierany w dowolnej aplikacji, którą ostatnio wybrałeś z listy.

proszę usuń mnie
źródło
Czy chciałeś wstawić znak skrótu (#) w adresie URL zrzutu ekranu 3?
próbuje
@trysis Właśnie użyłem go do ominięcia limitu maksymalnie 2 adresów URL.
usuń mnie
Och, to ma sens. Nadal jednak wygląda dziwnie.
próbuje
Oczyściłem ci A i dodałem dla ciebie trzeci adres URL.
slm
2

To zależy od smaku Uniksa, którego używasz. W OS X możesz użyć openpolecenia:

OPEN(1)                   BSD General Commands Manual                  OPEN(1)

NAME
     open -- open files and directories

SYNOPSIS
     open [-e] [-t] [-f] [-F] [-W] [-R] [-n] [-g] [-h] [-b bundle_identifier]
          [-a application] file ... [--args arg1 ...]

DESCRIPTION
     The open command opens a file (or a directory or URL), just as if you had
     double-clicked the file's icon. If no application name is specified, the
     default application as determined via LaunchServices is used to open the
     specified files.

     If the file is in the form of a URL, the file will be opened as a URL.

...
Ionoclast Brigham
źródło
Ponadto openpolecenie pojawiło się po raz pierwszy w NextStep i zostało odziedziczone przez OS X, więc może być dostępne w jakiejś formie na innych platformach opartych na OpenStep (np. AfterStep, LiteStep).
Ionoclast Brigham