Wie öffne ich mehrere Terminal-Registerkarten in verschiedenen Ordnern (Arbeitsverzeichnissen)?

10

Ich möchte, dass ein Skript mehrere Registerkarten in verschiedenen Ordnern öffnet.

Während der Suche habe ich diesen Eintrag gefunden, aber ein Austausch wie unten gezeigt hat ein Terminal mit drei Registerkarten in meinem Home-Ordner geöffnet. Die Fehlermeldung zeigte:

Failed to parse arguments: Unknown option --execute=cd /some/thing/

Das Skript sieht folgendermaßen aus:

#!/bin/sh
gnome-terminal --tab --execute="cd /some/thing/" \
          --tab --execute="cd /home/" \
          --tab --execute="cd /home/" \
exit 0

Eine Variation mit --working-directory = "/ some / thing /" hat ebenfalls nicht geholfen. Kannst du einen Fehler sehen?

Kerkdyk
quelle

Antworten:

8

Das Folgende funktioniert für mich auf oneiric. Sie können dies anstelle Ihrer Version verwenden:

#!/bin/bash
gnome-terminal --tab  --working-directory="/var/www/" --tab --working-directory='/home/' --tab --working-directory='/home/'
exit 0
Richard Holloway
quelle
3

Ihr spezifischer Fehler wird dadurch verursacht, dass Sie die --executeOption nicht richtig verwenden. Wenn Sie sich den Auszug aus der Manpage unten ansehen, werden Sie feststellen, dass --execute kein Gleichheitszeichen als Teil der Syntax aufgeführt ist, da einfach der gesamte Rest der Befehlszeile ausgeführt wird. Ein Beispiel für die korrekte Verwendung wäre:

gnome-terminal --execute play '/home/cjohnson/Still Alive.mp3'

WICHTIGER HINWEIS: Die
Verwendung cdist ohnehin ein Sonderfall. cdist nicht wie die meisten Befehle - es startet keine eigene Binärdatei / ausführbare Datei. Es wird direkt von bash(oder der von Ihnen verwendeten Shell) interpretiert . Daher cdstimmt der Versuch, aufzurufen , nicht mit den Flags --executeund überein -x(die anscheinend einen untergeordneten Prozess direkt erzeugen möchten). Das gleiche Problem tritt auf (ich habe es überprüft) bei anderen Befehlen, die direkt von bashlike verarbeitet werden home. Selbst bei ordnungsgemäßer Verwendung ohne Gleichheitszeichen wird der Fehler "Datei oder Verzeichnis nicht gefunden" angezeigt. Daher ist die Verwendung dieser --working-directory=[DIRECTORY]Option die beste Wahl, um das zu tun, was Sie tun möchten.

EIN ANDERER WICHTIGER HINWEIS:
Selbst wenn dies nicht der Fall wäre, würden Sie dennoch in Schwierigkeiten geraten. Das Problem besteht darin, dass Sie versuchen, die --executeOption zu verwenden, wenn Sie tatsächlich die Bedeutung der --commandOption beabsichtigen . In der Manpage-Dokumentation wird ausdrücklich darauf hingewiesen

-e, --command = STRING
Execute das Argument für diese Option innerhalb des Terminals.

-x, --execute Führt
den Rest der Befehlszeile im Terminal aus.

(Hervorhebung von mir)

Mit anderen Worten, es wird es wahrscheinlich nicht so analysieren, wie Sie es sich vorstellen. Die Verwendung --executeverhindert, dass Sie weitere Optionen an übergeben gnome-terminal.

Ein Auszug aus einem meiner eigenen Skripte, in dem ich mehrere Befehle auf separaten Registerkarten ausführe (Namen wurden aus Datenschutz- / Sicherheitsgründen geändert):

gnome-terminal --tab --command="ssh cjohnson@GLaDOS" --tab --command="ssh drattman@GLaDOS"

(Übrigens führt der Versuch, das --commandFlag mit cdoder zu verwenden home, auch zu dem bekannten Fehler "Keine solche Datei oder kein solches Verzeichnis".)

Ich hoffe das ist nicht zu lang. Ich versuche nur gründlich zu sein.

Dain42
quelle