Ok, so läuft es gedit myfile.txt
gut. Wie sieht es aber mit dem Öffnen einer Datei aus einem Bash-Skript mit der mit dem Dateityp verknüpften Standard-Desktop-App aus?
Ich habe unten versucht, was großartig funktioniert, wenn es manuell im Terminal ausgeführt wird, aber wenn ich es in eine Bash-Datei lege, passiert nichts:
#!/bin/bash
xdg-open "myfile.txt"&
Was soll ich stattdessen tun?
Bitte beachten Sie, dass die Datei auch nach dem Schließen des Terminals geöffnet bleiben muss.
gedit
auflisten , und es wird mit der aufgelisteten Datei geöffnet (oder es wird eine neue Registerkarte in einer vorhandenen Sitzung geöffnet). Es kehrt jedoch sofort zurück, anstatt zu blockieren, bis das Programm beendet wird.xtg-open
auf*.txt
,*.html
und mehr - einfach nicht funktionieren.Antworten:
Ich denke dein Skript sollte funktionieren. Sie können jedoch etwas hinzufügen, um ein wenig mehr Informationen zu erhalten:
Wenn Sie dieses Skript (mit dem Namen my_open.sh) in einem Terminal wie folgt ausführen:
Ich erhalte folgende Ausgabe:
das sagt mir, dass der Pfad zur Datei in Ordnung ist, der Mimetyp erkannt wird und die Desktopfile, die zum Öffnen der Datei verwendet wird, ebenfalls in Ordnung ist. Und gedit öffnet sich mit der fraglichen Datei.
Nun, wenn auf einer anderen Datei ausgeführt:
Ich erhalte folgende Ausgabe:
Beachten Sie den unterschiedlichen Mimetyp und die fehlende Desktop-Datei. Trotzdem öffnet xdg-open den Standard für alle Textdateien (gedit).
Vielleicht möchten Sie Ihrem Skript etwas Ähnliches hinzufügen und prüfen, ob Sie eine unerwartete Ausgabe erhalten (die Sie dann Ihrer Frage hinzufügen können ...).
quelle
finished script
am Ende. Ich empfehle [ catb.org/~esr/writings/taoup/html/) (Die Kunst der Unix-Programmierung), die Regel der Stille. Übrigens: Backticks sind veraltet - bevorzugen Sie stattdessen $ (...), was verschachtelbar ist.nohup
oder brauchen&
, aber dasxdg-open
kehrt zurück und lässt Sie fortfahren.xdg-open
bereits benötigt wird. Dies ist also sowieso kein Skript in Produktionsqualität ...Erstellen Sie ein Bash-Skript test.sh als:
Dann machen Sie das Skript ausführbar als:
Führen Sie das Skript abschließend wie folgt aus:
quelle
Vielleicht gnome-open statt xdg-open
quelle
Sie gehen in die richtige Richtung. Wenn Sie möchten, dass die GUI-App beim Schließen des Terminalfensters geöffnet bleibt, müssen Sie nur ein
nohup
am Zeilenanfang hinzufügen .Wenn die GUI-App nicht geöffnet wird, ist dies wahrscheinlich darauf zurückzuführen, dass Sie die
DISPLAY
Umgebungsvariable nicht in der Shell festgelegt haben, über die Sie sie starten möchten. Versuche ein Echo zu machen$DISPLAY
quelle
nohup
noch&
Der erste Teil Ihrer Frage
Mit dem Befehl können
cat
Sie eine Datei im Terminal öffnen, wenn Sie dies möchten (dies steht im ersten Teil Ihrer Frage).Um es zu benutzen, können Sie einfach eingeben
cat FILENAME
.Andere Informationen
Wenn Sie weitere Befehle benötigen: Hier ist eine gute Liste von Befehlen.
GNOME-Standardeditor
Wenn Sie die Datei in der Standardanwendung von GNOME öffnen möchten
gedit
.Um es zu benutzen, tippe einfach
gedit FILENAME
quelle
gedit file.filetype
, öffnen Sie die Datei so, wie Sie möchten!Ich bin mir zwar nicht sicher, was hier wirklich erreicht werden soll, aber basierend auf einigen jüngsten Kommentaren, dass ein einzelnes Skript JEDE Datei in der Standard-App öffnen sollte oder soweit die App dies unterstützt.
Wenn ja, ist dies am einfachsten, indem Sie ein Terminal öffnen und Skriptname / Pfad / nach / Dateiname eingeben oder wenn Pfad Leerzeichen enthält, Skriptname '/ Pfad / nach / Dateiname'.
Verwenden Sie dies als Skript. Sie können einen beliebigen Namen für das Skript verwenden. Ich verwende openit1 als Beispiel. Es ist am besten, wenn Sie Skripte direkt von ~ / bin verwenden, um eine Nummer als Namen hinzuzufügen, damit keine Konflikte mit vorhandenen Linux-Befehlen auftreten
Schließen Sie gedit & im Terminal
Starten Sie neu, um ~ / bin zu Ihrem $ PATH hinzuzufügen
Zum Aufrufen ein Terminal öffnen und loslegen
WENN wie orig angegeben & mit orig. Skript für eine bestimmte Datei pro Skript & Aufruf von d. Klicken Sie mit der linken Maustaste auf das Skript, und wählen Sie " Ausführen " anstelle von "Im Terminal ausführen".
quelle
Restart to add ~/bin to your $PATH
- ähm, alte Windows-Gewohnheiten? ;)