So automatisieren Sie das Starten von Terminalinstanzen für bestimmte Aufgaben

10

Ich gehe einige Programmier-Tutorials durch und muss für jede Sitzung mindestens 3 Terminalfenster starten (eines für das Ende einer Protokolldatei, eines zum Testen der Ausgabe, eines zum Ausführen verschiedener Shell-Befehle usw.).

Im Moment starte ich sie alle manuell: Klicken Sie auf das Terminal-Symbol, wechseln Sie in den richtigen Ordner, geben Sie die Befehle ein und ändern Sie den Fenstertitel in einen aussagekräftigen Titel.

Gibt es eine Möglichkeit, ein Skript zu schreiben oder etwas, das das für mich automatisiert? Und wenn ja, wie?

(Ich finde es cool, kein vollständiges Skript als Antwort zu erhalten. Ein Zeiger, wo ich mit dem Lesen beginnen soll, würde auch funktionieren.)

Adam Lear
quelle

Antworten:

9

Da Sie auf das Terminal-Symbol klicken, wird davon ausgegangen, dass Sie es verwenden gnome-terminal.

Ich habe eine Liste von Optionen erhalten, indem ich sie gnome-terminal --helpüber die Befehlszeile verwendet und von dort gelesen habe.

Aufbauend auf Macos Antwort könnte ich so etwas vorschlagen:

gnome-terminal --window --title=Log -e "tail -f /var/log/syslog" --window --title=Output --working-directory=output --window --active --title=Dev --working-directory=dev/project

In diesem Beispiel werden drei Fenster gestartet (obwohl Sie --tabfür Registerkarten übergeben könnten ) und die Arbeitsverzeichnisse (relativ zu home) und Titel für jedes tailFenster festgelegt , der Befehl in einem Fenster gestartet und das dritte Fenster aktiviert.

Natürlich können Sie es vorziehen, separate Zeilen zu verwenden, um jedes Fenster zu starten, insbesondere wenn Sie viele Argumente haben.

Eine weitere nützliche Sache, wenn Sie Ihre Fenster nach Ihren Wünschen angeordnet haben, ist die Verwendung

gnome-terminal --save-config=FILE

Dadurch wird eine Konfigurationsdatei mit Informationen zu allen geöffneten Terminalfenstern und Registerkarten (einschließlich der Titel, Arbeitsverzeichnisse usw.) erstellt. Wenn Sie gnome-terminal mit der --load-configOption starten, wird Ihr Layout neu erstellt.

Viele Entwickler, die mit mehreren Terminals arbeiten, verwenden Terminator gern, da es Funktionen wie ein Rasterlayout und Tastaturkürzel hinzufügt.

jbowtie
quelle
Wird das Fenster auf diese Weise mit dem Flag -e geschlossen, sobald der Befehl ausgeführt wird? Und wenn ja, kann das Fenster geöffnet bleiben?
EMF
8

Unabhängig davon, welchen Terminalemulator Sie verwenden, sollte ein Befehl als Argument akzeptiert werden können. Beispielsweise:

gnome-terminal -e "tail -f /var/log/syslog"

Fügen Sie Ihrem Autostart einfach solche Befehle unter System -> Einstellungen -> Sitzungen (Ubuntu) oder Systemeinstellungen -> Autostart (Kubuntu) hinzu.

Maco
quelle
4

Sie können dies auch mithilfe eines Skripts automatisieren. Ich empfehle, das Advanced Bash Scripting Guide oder das Bash Programming HOWTO zusammen mit der Manpage für das von Ihnen verwendete Terminal zu lesen.

Hier ist ein einfaches Beispiel:

$ vi your-script
#!/bin/bash
gnome-terminal -e "tail -f /var/log/syslog"
gnome-terminal --working-directory=/foo/bar
gnome-terminal --whatever-else

Dann machen Sie es einfach ausführbar:

$ chmod +x your-script
anonym
quelle
brauchst du nicht execall das?
Maco
Ja, sofern das Gnome-Terminal nicht bereits ausgeführt wird, öffnet der Befehl nur ein neues Fenster für den anderen ausgeführten Prozess und wird dann geschlossen.
LassePoulsen