Warum kann ich diesen Befehl nicht in meinem Terminal ausführen:
open index.html
Sollte es diese Datei nicht in meinem Browser öffnen? Ich kann diesen Befehl auch nicht ausführen : open index.html -a "Sublime Text"
. Das Ergebnis dieser Befehle ist:
$ open index.html
Couldn't get a file descriptor referring to the console
$ open index.html -a "Sublime Text" -
open: invalid option -- 'a'
Usage: open [OPTIONS] -- command
command-line
file-opening
Edgar Oliveira
quelle
quelle
xdg-open
welche die Datei in Ihrem Browser öffnen soll. Deropen
Befehl ist eine Verknüpfung zumopenvt
Befehl und öffnet eine Binärdatei in einer neuen virtuellen Konsole. Das ist anscheinend nicht was du willst.open
unter Linux einen Befehl gibt .open
unter Linux einen Befehl, der mit verknüpft istopenvt
; Die Fehlermeldungen in der Frage stimmen mit dieser Situation überein.xdg-open <file>
und es sollte die Datei mit dem entsprechenden Programm öffnen.Antworten:
Der Hauptzweck des
open
Befehls von OS X besteht darin, eine Datei in der zugehörigen Anwendung zu öffnen. Das Äquivalent zu modernen Nicht-OSX-Unices istxdg-open
.xdg-open
hat kein Äquivalent zu OSXopen -a
, um eine Datei in einer bestimmten Anwendung zu öffnen. Dies liegt daran, dass die normale Methode zum Öffnen einer Datei in einer Anwendung darin besteht, einfach den Namen der Anwendung gefolgt vom Namen der Datei einzugeben. Genauer gesagt müssen Sie den Namen des ausführbaren Programms eingeben, das die Anwendung implementiert.Linux verwaltet wie andere Unix-Systeme (aber meines Wissens nicht die Nicht-Unixy-Teile von OS X) Software, indem es sie mit einem Paketmanager verfolgt und einzelne Dateien dort ablegt , wo sie verwendet werden . Beispielsweise befinden sich alle ausführbaren Programme in einer kleinen Gruppe von Verzeichnissen, und alle diese Verzeichnisse sind in der
PATH
Variablen aufgeführt . runningsublime_text
sucht nach einer Datei, diesublime_text
in den in aufgeführten Verzeichnissen aufgerufen wirdPATH
. OS X benötigt eine zusätzliche Indirektionsebene,open -a
um Anwendungen zu verarbeiten, die in einem einzelnen Verzeichnisbaum entpackt und in einer Anwendungsdatenbank registriert sind. Linux hat keine Anwendungsdatenbank, ist aber so organisiert, dass es keine benötigt.Wenn das Ausführen der Befehlsshell
sublime_text
für Sie nicht funktioniert, wurde Sublime Text nicht ordnungsgemäß installiert. Ich habe es nie verwendet, und anscheinend wird es als Tar-Archiv und nicht als Distributionspaket (z. B. deb oder rpm) geliefert. Daher ist es möglich, dass Sie einen zusätzlichen Installationsschritt ausführen müssen. Es ist wirklich die Aufgabe der Macher von Sublime Text, dies automatisch zu machen, aber wenn sie es nicht getan haben, können Sie es wahrscheinlich selbst tun, indem Sie den Befehl ausführenErsetzen Sie natürlich
…
durch den Pfad, in dem sich diesublime_text
ausführbare Datei befindet.Der
open
Befehl, auf den Sie gestoßen sind, ist ein älterer Name für denopenvt
Befehl (einige Linux-Distributionen enthalten ihn nur unter dem Namenopenvt
). Deropenvt
Befehl erstellt eine neue virtuelle Konsole , die nur von root ausgeführt werden kann und in diesem Jahrhundert nicht sehr häufig verwendet wird, da die meisten Benutzer immer nur in einer grafischen Fensterumgebung arbeiten.quelle
Sie erwähnen nicht das Betriebssystem, das Sie verwenden.
Bei einigen Linux-Distributionen ist der
open
Befehl eine symbolische Verknüpfung zu demopenvt
Befehl, der eine Binärdatei in einer neuen virtuellen Konsole öffnet. Das ist anscheinend nicht was du willst. Ihre Fehlermeldungen zeigen tatsächlich an, dass Sie denopenvt
Befehl aufgerufen haben . Dieser Befehl erwartet eine Programmbinärdatei (eine ausführbare Datei) als Argument.Ich nehme an, Sie meinen,
xdg-open
was im Gegensatz dazuopenvt
keine ausführbare Datei als Argument erwartet, sondern eine Datei, die einem Programm zugeordnet ist und die Datei mit dem Programm öffnet. Sie können Dateien und URLs als Argumente übergeben.Daher
xdg-open index.html
sollte die Datei in Ihrem Browserxdg-open image.png
geöffnet werden , sollte die Datei in Ihrem Bildbetrachter geöffnet werden usw.quelle
xdg-open
Aufruf ist, die Standardanwendung für diese Datei aufzurufen . Wenn Sie ein anderes Programm verwenden möchten, rufen Sie einfach an<program> <file>
. Ich sehe das Problem nicht.open index.html -a "Sublime Text" -
Deshalb sage ich "Problem", denn wenn Siexdg-open
eine HTML-Datei öffnen, besteht eine bessere Wahrscheinlichkeit, dass die Datei vom Browser und nicht von einem Texteditor wie "Sublime Text"Obwohl die Leute oft
xdg-open
als Emulation der Funktionalität von bezeichnenopen
, ist macOSopen
etwas anders, weil es 1. nichts von stdout / stedrr umleitet und 2. alles, was Sie ausführen möchten, vom Terminal löst (was fast immer das ist, was Sie beim Starten der GUI wollen Apps, damit keine Terminals herumliegen)Um dies zu lösen, habe ich mit einigen Standard-GNU-Tools ein geeignetes Äquivalent gefunden (die Syntax ist Fischschale, aber die Konvertierung in Bash ist trivial):
Hinzugefügt :
Für diejenigen, die die Bash-Shell verwenden, ist hier die Funktion:
quelle
Meine Lösung (täglich verwendet) ist die Verwendung eines
alias
fürxdg-open
.Setzen Sie dies einfach auf Ihre
~/.bashrc
:Schließen Sie dann Ihre Shell oder starten Sie sie neu
source ~/.bashrc
.Jetzt können Sie jede Datei mit diesem Befehl öffnen ... von .png über .jpg bis .docx bis .pdf bis .txt.
quelle