Gibt es einen "Öffnen mit" -Befehl für die Befehlszeile?

24

Hat die Befehlszeile eine Möglichkeit, eine empfohlene Liste der Programme abzurufen, die zum Öffnen einer bestimmten Datei verwendet werden, basierend auf dem Dateityp? Zum Beispiel hätte eine .pdfDatei eine open with...Empfehlung mit den Programmen Evinceund Document Viewer.

Ich benutze die Befehlszeile für die meisten Dinge, aber manchmal vergesse ich den Namen eines Programms, das ich zum Öffnen eines bestimmten Dateityps verwenden möchte.

Übrigens benutze ich Ubuntu 13.10.

Pro-Tipp

Dank der unten ausgewählten Antwort von @slm habe ich das folgende Bash-Skript in einer Datei mit dem Namen erstellt openwith.sh:

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

Als Alias ​​hinzufügen oder direkt als openwithBefehl ausführen .

modulitos
quelle
1
Sie können mit versuchen gnome-open file. Ich habe alias o='gnome-open'meiner .bashrcEinfachheit halber hinzugefügt .
Pål GD
gnome-openfunktioniert ähnlich wie xdg-open.
slm
Anscheinend auch gvfs-open. Frage Was kann ich anstelle von gnome-open verwenden? von ubuntu fragen .
Pål GD

Antworten:

33

Es gibt keinen Befehl, den ich jemals gesehen habe, der als "Öffnen mit ..." fungiert, aber Sie können den Befehl verwenden xdg-open <file>, um eine bestimmte <file>Datei in der Anwendung zu öffnen , die diesem bestimmten Dateityp zugeordnet ist.

Beispiele

Öffnen einer Textdatei:

$ xdg-open tstfile.txt
$

Dies führt dazu, dass die Datei tstfile.txtgeöffnet wird in gedit:

                         ss von gedit

Öffnen eines LibreOffice Writer-Dokuments:

$ xdg-open tstfile.odt 
$

Das Ergebnis ist, dass die Datei tstfile.odtin Writer geöffnet wird:

                         ss des Schriftstellers

Welche Apps werden verwendet?

Sie können xdg-mimedas System abfragen, um herauszufinden, welche Anwendungen einem bestimmten Dateityp zugeordnet sind.

$ 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

Dies ist eine 2-Stufen-Operation. Zuerst frage ich nach dem MIME-Typ einer bestimmten Datei xdg-mime query filetype tstfile.txt, die zurückgegeben wird text/plain. Dies wird dann verwendet, um eine weitere Suche durchzuführen, um die Liste der Anwendungen zu ermitteln, die diesem MIME-Typ zugeordnet sind. Wie Sie oben sehen können, habe ich 2 Apps zugeordnet geditund calibrefür .txtDateien.

Mit können Sie auch xdg-mimedie Assoziationen ändern. Sehen Sie man xdg-mimefür weitere Details.

slm
quelle
Gibt es eine Möglichkeit, andere Arten von Programmen als die Standardprogramme anzuzeigen? Zum Beispiel habe ich gerade installiert okular, um PDFs anzuzeigen, aber Ihr Beispiel oben zeigt nur, evincewenn ich es in einer PDF- Datei ausführe.
Modulitos
1
@Lucas - ja, die Beispiele, die ich gezeigt habe, zeigen die Anwendungen, die einem bestimmten Dateityp oben zugeordnet sind. Zum Beispiel. Dateien vom Typ .txtwerden beispielsweise mit gedit und calibre verknüpft.
slm
Muss ich .desktopDateien für die Programme haben, die ich aufgelistet haben möchte? Wenn ich beispielsweise das Skript für eine .pdfDatei ausführe , wird es zurückgegeben evince.desktop, obwohl ich es auch ausführen kann okular.
Modulitos
@Lucas - Dies wird wahrscheinlich am besten als neues Q gefragt, da wir uns jetzt vom ursprünglichen Q entfernen.
slm
5

Wenn Sie hauptsächlich auf der Befehlszeile arbeiten, können Sie sich einen Dateimanager ansehen, der auf Flüchen basiert, z. B. Ranger oder VIFM . In beiden können Sie Standardaktionen für Dateitypen definieren.

In vifm können Sie beispielsweise ~/.vifm/vifmrcAssoziationen wie folgt definieren:

" 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

Schlagen Enterwhith dem Cursor auf eine beliebige Datei mit einer der definierten Aktionen werden sehen , es durch die entsprechende Anwendung geöffnet. Wie Sie bei .htmlDateien sehen können, können Sie sowohl ein Skript als auch eine Anwendung auslösen.

jasonwryan
quelle
5

Art von, aber es wird Ihre Standardanwendung als Ergebnis ändern. Ich bin nicht sicher, auf welchen anderen Betriebssystemen dies funktioniert, aber die folgenden Anweisungen funktionieren für Ubuntu 12.04 - Desktop X86-64. Ich hatte keine PDF-Dateien zur Hand und habe sie mit einem ZIP-Archiv getestet.

Allgemeine Schritte

Schritt 1

In einem Terminaltyp:

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

    ss # 1

Schritt 2

Wählen Sie aus der Liste aus, indem #Sie die gewünschte Anwendung eingeben und auf drücken enter. Die Datei wird sofort in der von Ihnen ausgewählten Anwendung geöffnet.

Screenshot 2 = https://copy.com/um6Rf7zRdceT

    ss # 2

Screenshot Nr. 3 = https://copy.com/ytwKCqR6nv8i

    ss # 3

Anmerkungen

Anmerkung 1

Dadurch wird die Standardanwendung in die von Ihnen gewählte geändert. Jedes Mal, wenn Sie diesen Dateityp öffnen, wird sie in der zuletzt aus der Liste ausgewählten Anwendung geöffnet.

Bitte lösche mich
quelle
Wollten Sie ein Rautezeichen (#) in die URL für Screenshot 3 einfügen?
Trysis
@trysis Ich habe es gerade verwendet, um die maximale Anzahl von 2 URLs zu umgehen.
Bitte löschen Sie mich
Oh, macht Sinn. Sieht aber trotzdem komisch aus.
Trysis
Ich habe dich A aufgeräumt und die 3. URL für dich hinzugefügt.
SLM
2

Kommt auf den Geschmack von Unix an, den du benutzt, denke ich. In OS X können Sie den folgenden openBefehl verwenden:

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
quelle
Außerdem wurde der openBefehl zuerst in NextStep angezeigt und von OS X geerbt, sodass er möglicherweise auf anderen mehr oder weniger OpenStep-basierten Plattformen (z. B. AfterStep, LiteStep) in irgendeiner Form verfügbar ist.
Ionoclast Brigham