Linux-Äquivalent des Mac OS X-Befehls "Öffnen" [geschlossen]

214

Ich fand den Befehl "Öffnen" in Mac OS X sehr praktisch in der Befehlszeile. Aus "Mann offen":

Der openBefehl öffnet eine Datei (oder ein Verzeichnis oder eine URL), als hätten Sie auf das Dateisymbol doppelklicken müssen. Wenn kein Anwendungsname angegeben wird, wird die über LaunchServices festgelegte Standardanwendung zum Öffnen der angegebenen Dateien verwendet.

Das heißt, wenn ich eine PDF-Datei mit dem Standard-PDF-Viewer öffnen möchte (zufällig Vorschau), muss ich nur Folgendes tun:

open my.pdf

Unter Linux musste ich mich jedoch umsehen, um eine PDF-Datei über die Befehlszeile zu öffnen, um herauszufinden, dass der Standard-PDF-Viewer beispielsweise "evince" ist (wer hätte das gedacht?), Und dann

evince my.pdf

Gibt es also ein einfaches Äquivalent zum Befehl 'open' in der Linux-Befehlszeile?

Vielen Dank!

Joachim Sauer
quelle
6
Vielleicht sollte diese Frage auf superuser.com verschoben werden?
Quazgar
1
Super User scheint unangemessen - gibt es einen StackOverflow für "normale Benutzer" oder möglicherweise "Programmierer, die andere Anwendungen skripten möchten", dh automatisieren?
Krazy Glew
askubuntu könnte passen.
Gopherkhan

Antworten:

238

Sie könnten versuchen xdg-open, die meisten Linux-Distributionen haben es. Es wird die standardmäßig zugeordnete App für Ihre Datei geöffnet.

Zu Ihrer Information https://portland.freedesktop.org/doc/xdg-open.html

Nummer 5
quelle
13
Ein großer Unterschied zwischen diesem und dem openist jedoch, dass dies die Datei / App nicht im Hintergrund öffnet. Linux-Apps scheinen sehr gesprächig zu sein und geben häufig mehrere Diagnose- und Warnzeilen direkt in Ihr Terminal aus (obwohl nichts wirklich schief gelaufen ist). Normalerweise muss ich xdg-open <file> &> /dev/null &stattdessen so etwas tun . Gibt es in dieser Hinsicht etwas Besseres als xdg-open?
Suan
13
@Suan: Es öffnet die App im "Hintergrund", getrennt vom Terminal, so dass Sie nach dem Start der App möglicherweise weiter im Terminal arbeiten können. Das Trailing &wird also nicht benötigt. Die "mehreren Diagnosezeilen" stammen von der App selbst und nicht von xdg-open. Wenn Sie keine Ausgabe wünschen, müssen Sie diese &> /dev/nullsogar evincedirekt verwenden (Beispiel von OP), sodass Ihre Beschwerde nichtig ist. xdg-openist in der Tat der richtige Weg.
MestreLion
15
@MestreLion Ich glaube nicht, dass die Beschwerde vollständig ungültig ist, da das Öffnen des Mac nicht dazu führt, dass die Anwendungsausgabe an das Terminal zurückgesendet wird.
Max Nanasy
7
@MaxNanasy: Die Ausgabe erfolgt von Anwendungen. Es ist nicht xdg-opendie Schuld, wenn sie sich unterhalten. Und das Unterdrücken solcher Nachrichten sollte die Wahl des Benutzers sein , nicht die von xdg. Es ist also eine leere Beschwerde, nach etwas "Besserem" zu fragen als xdg-open. Auch wenn Mac openkeine Option zur Ausgabe dieser Meldungen hat, würde ich sagen , dass openist viel schlimmer als xdg-open, da , wenn Sie Befehlszeile Startdateien verwenden , werden Sie in der Regel in dieser Ausgabe interessieren (sonst, warum nicht einfach einen Doppelklick auf die Datei in einem Browser wie Nautilus?)
MestreLion
12
@MestreLion Obwohl man behaupten könnte, dass die Beschwerde trivial ist, alias open='xdg-open &>/dev/null'ergibt sich ungefähr das gewünschte Verhalten (obwohl Fehler von xdg-open selbst (im Gegensatz zu nur dem gestarteten Programm) ebenfalls zum Schweigen gebracht würden, was unerwünscht ist).
Max Nanasy
76

Das Äquivalent, das Sie suchen, ist xdg-opendas, das auf die gleiche Weise wie der openBefehl von OS X verwendet werden kann . Beispielsweise:

xdg-open ~/Documents/Chubby_Bubbies.odt

Dies ist jedoch sehr schwer schnell und genau zu tippen. Stattdessen sollten Sie einen Alias ​​für xdg-open erstellen, wodurch der Vorgang viel schneller wird.

Natürlich können Sie einen Alias ​​verwenden open, damit er mit OS X übereinstimmt (Sie können alles auswählen, was Sie möchten), aber ich persönlich verwende ]aus Geschwindigkeitsgründen die rechte eckige Klammer ( ) für meine Verknüpfung. Fügen Sie Ihrer .bashrcDatei Folgendes hinzu, um dies zu verwenden:

alias ']'='xdg-open'

Um eine Ressource zu öffnen, verwenden Sie sie wie folgt:

] www.google.com
] file.txt
] ~/Pictures
] ssh://myserver.local/home/jeremy

Außerdem können Sie damit einen Dateibrowser (z. B. Nautilus) im aktuellen Verzeichnis öffnen:

] .

Aus Erfahrung habe ich festgestellt, dass Ein-Buchstaben-Aliase für die obige Verknüpfung am besten funktionieren. Ziel ist schließlich Effizienz. Und Sie können zurückgehen und unter OS X denselben Alias ​​erstellen - das überlasse ich dem Leser als Übung. :-)

Jeremy Visser
quelle
26
Ich habe einen Alias ​​von 'open' zu 'xdg-open' erstellt, um ihn sowohl unter Linux als auch unter Mac konsistent zu machen.
Adam Byrtek
Das ist gut, aber nicht großartig. Ich habe versucht, eine URL-Datei zu öffnen und sie in gedit zu öffnen.
Sorin
18
@sorin Versuchst du es so klingen zu lassen, als ob das meine Schuld ist?!
Jeremy Visser
7
@sorin: Öffnet xdg-opendie Standardanwendung Ihres Systems für die Datei. In Ihrem Fall werden .urlDateien so eingestellt, dass sie in gedit geöffnet werden. Wenn Sie dies ändern möchten, klicken Sie mit der rechten Maustaste auf die Datei in Nautilus und gehen Sie zu Eigenschaften> Öffnen mit, um die Standardanwendung zu ändern. Dies xdg-openfunktioniert entsprechend.
MestreLion
Hier ist eine Zusammenfassung , die ich erstellt habe: Kopieren, Einfügen und Ausführen des Befehls im Abschnitt "Insgesamt" im ersten Kommentar.
Ozanmuyes
14

Ich habe das einfach selbst geklärt, also dachte ich, ich würde aufschreiben, wie ich es gemacht habe, was speziell für das, was Suan fragte, relevant ist. Mit diesen Schritten können Sie einfach "Öffnen" eingeben und Ihr Terminal nicht mit Nachrichten abdecken, die Sie nicht benötigen:

Erstellen Sie ein Skript mit dem Namen openin ~/bin, der Inhalt ist nur:

xdg-open "$1" &> /dev/null &

Speichern und schließen Sie das Skript und geben Sie "source .profile" (oder ggf. .bash_profile) ein. Wenn Sie also "Musik öffnen" eingeben, wird Ihr Musikordner in der Nautilus-Benutzeroberfläche geöffnet und Sie sollten nichts in Ihr Terminal eingeben.

Anake
quelle
Was ist mit dem Alias ​​und der seltsamen Lage? Rufen Sie einfach das Skript selbst auf openund $HOME/bin/open
fügen Sie
Wenn Sie auf meinem Computer (Ubuntu 11.10) ein Skript mit dem Namen 'open' zu Ihrem Pfad hinzufügen und versuchen, dies auf diese Weise zu tun, wird es von / bin / open überschrieben. Ich kann also keinen Weg finden, wie ich ohne Alias ​​zur Arbeit kommen kann.
Anake
Der Trick ist , ein eigenes Skript in einem Verzeichnis zu haben , die in Ihrem früheren kommt PATHals /bin. Konventionell wird es, wenn Sie es haben $HOME/bin, am Anfang des PATH vor allen Systemverzeichnissen hinzugefügt. In der Regel wird dies von Ihrem .profileoder einem ähnlichen Unternehmen durchgeführt. Zum Beispiel macht die Standardeinstellung .profileunter Ubuntu genau dies.
Tripleee
2
Das Umleiten der Ausgabe nach /dev/nullist etwas launisch. Möglicherweise können Sie die Ausgabe an $HOME/.xsession-errorsoder eine solche umleiten , damit die Diagnose nicht vollständig verloren geht, falls Sie Fehler beheben müssen.
Tripleee
1
@efdee: Das korrekte Zitieren aller Variablen ist eine gute Programmierpraxis und in Bash-Skripten von entscheidender Bedeutung. Dies hat nichts damit zu tun xdg-open, dies ist ein Shell-Problem.
MestreLion
11

Traditionell können Sie den Befehl "see" verwenden. Welches verwendet nur Run-Mailcap. Dies funktioniert ohne Gnome und X usw.

man see
Ali Afshar
quelle
3
Das Problem ist run-mailcap(und seine vielen Aliase), dass eine separate (und schrecklich veraltete) App-Zuordnungsdatenbank verwendet wird. Während in meinem System beispielsweise .mp3Songs in VLC korrekt geöffnet werden, werden .txtDateien in weniger (anstelle von gedit) .pdfgeöffnet und Dateien können einfach nicht geöffnet werden! (Fehler: Keine "Ansicht" Mailcap-Regeln für Typ "Anwendung / PDF" gefunden)
MestreLion
Wie gesagt, es kommt auf jedes System an. Nur wenige Anwendungen registrieren sich so, run-mailcapdass sie sie erkennen. xdg-openintern verwendet gvfs-open(auf Gnome-Systemen wie Ubuntu), die wiederum die MIME-Datenbankspezifikation von xdg verwendet, die weit mehr Anwendungen verwenden.
MestreLion
gimpIch habe ein PDF mit mehr als 50 Seiten für mich geöffnet . Ich bleibe dabei xdg-open.
user1717828
Öffnen von txt-Dateien in lessx''D
Timo
4

Gnom offen

Ana Betts
quelle
7
gnome-open ist jetzt veraltet und außerdem wurde es bereits intern verwendet, xdg-openwenn der Benutzer auf Gnome war (jetzt verwendet es gvfs-open)
MestreLion
2

Wenn Sie Ihre Mimen richtig eingerichtet haben, können Sie verwenden mimeopen. Schauen Sie sich die Manpage an, da sie einige nützliche Optionen bietet.

Stacksia
quelle
1
Es wäre schön, wenn diese Antwort erweitert würde. Es würde mich interessieren, wie das funktioniert
Magnus
-3

In der Gnome Desktop-Umgebung verwende ich den folgenden Befehl:

nautilus `pwd` &

Dies ist ähnlich wie "offen". Befehl in Mac

WonderLi
quelle
11
Diese Antwort hat mehrere Probleme: A) Sie öffnet das aktuelle Verzeichnis und nicht die Datei, wie vom Benutzer angefordert. B) Sie können verwendet werden .anstelle von „ pwd“ C) , wenn Sie ändern pwdfür eine Datei, würde Benutzer noch ENTER treffen müssen , nachdem Nautilus D) die erste Öffnung nautilus öffnet nur für sie die Datei zu öffnen ist eine sehr indirekte Lösung.
MestreLion