Wie kann ich ein Skript erstellen, das Terminalfenster öffnet und Befehle ausführt?

108

Ich habe drei Skripte, die ich ausführen muss, wenn ich meine Ubuntu-Maschine starte, sie starten Dienste, die ich in meiner Entwicklungsumgebung verwende.

Um das zu tun, öffne ich manuell drei Terminals und tippe die Befehle ein.

Gibt es eine Möglichkeit, ein Skript zu erstellen, das drei Terminals öffnet und jeweils einen Befehl ausführt? (Jeder Befehl sollte in einem separaten Terminal-Fenster sein, damit ich deren Ausgabe sehen kann.)

    
JSBach 02.06.2011, 21:58
quelle

5 Antworten

110
gnome-terminal -e command

oder

xterm -e command

oder

konsole -e command

So ziemlich

terminal -e command

Damit das Terminal bleibt, wenn der Befehl beendet wird:

In der Konsole gibt es ein --noclose -Flag.

In xterm gibt es ein -hold -Flag.

In gnome-terminal , gehe zu Bearbeiten - & gt; Profileinstellungen - & gt; Titel Klicken Sie auf die Registerkarte Befehl . Wählen Sie Halten Sie das Terminal aus dem Dropdown-Menü Wenn Befehl beendet wird. Sie sollten dafür ein neues Profil anlegen und mit

ausführen
gnome-terminal --window-with-profile=NAMEOFTHEPROFILE -e command
    
nickguletskii 02.06.2011, 22:03
quelle
47

Anstelle der Festcodierung von gnome-terminal , konsole und so weiter, verwenden Sie das System Alternativen. Das Programm, das den Standard-Terminal-Emulator ausführt, ist:

x-terminal-emulator

Auf meinem System öffnet es jedes Mal, wenn ich diesen Befehl ausführe, eine neue Instanz von Konsole.

Glücklicherweise scheint das Terminal die Option -e zur Ausführung eines Befehls zu unterstützen (ich habe es für konsole und gnome-terminal verifiziert). Argumente nach dem Befehl werden an den aufgerufenen Befehl übergeben. Bash weigert sich, in meinem Terminal offen zu bleiben, ein zusätzliches Skript wird benötigt, um ein Terminal zu erhalten:

#!/bin/sh
"$@"
exec "$SHELL"

Wenn Sie das vorherige Skript als /home/user/hacky gespeichert und ausführbar gemacht haben, würden Sie Ihre Skripte mit folgendem Befehl ausführen:

x-terminal-emulator -e /home/user/hacky your-script optional arguments here

Der vollständige Pfad ist erforderlich und /home/user/hacky muss ausführbar sein.

Mein vorheriger Versuch, ein Skript in einem neuen Terminalfenster auszuführen, ist in Revision # 2 zu finden Ich erkannte, dass Argumente an x-terminal-emulator übergeben werden können.

    
Lekensteyn 02.06.2011 22:29
quelle
7

Ganz einfach -

#!/bin/bash

/etc/init.d/ccpd status

Dies ist genug für andere Befehle, die nichts im Terminal anzeigen müssen. Aber hier muss man den Status angezeigt sehen.
Daher muss in einem Terminalfenster ausgeführt werden

#!/bin/bash

gnome-terminal -e "/etc/init.d/ccpd status"  --window-with-profile=NAMEOFTHEPROFILE

Der andere Beitrag beabsichtigte [] , ein Platzhalter zu sein

Hier soll "NAMEOFTHEPROFILE" durch den Namen des Profils ersetzt werden, dass "das Terminal beim Beenden des Befehls hält".

    
Karthik T 23.01.2013 10:31
quelle
0

kommentiert die Antwort von Lekensteyn. Ich weiß, das ist ein alter Post, aber für jeden, der das nützlich findet (wie ich es gerade getan habe) Anstatt ein weiteres "Hacky-Skript" zu erstellen, fügen Sie einfach eine Funktion in das Skript ein, das Sie aufrufen

hacky_function()
{
"$@"
exec "$SHELL"
}

Rufen Sie Ihr Skript mit "x-terminal-emulator -e / path / to / script hacky_function optionale Argumente hier"

auf

Vergessen Sie nicht, am Ende des Skripts "$ @" einzugeben.

    
Sruli 06.12.2017 21:11
quelle
-2

Verwenden Sie den Bildschirmbefehl und -d Von einer bestehenden Bildschirmsitzung trennen und hier erneut anhängen -m erzwinge eine neue Bildschirmsitzung -S Erstellen Sie eine benannte Sitzung, anstatt den Standardnamen zu verwenden

    
Jack Heath 13.04.2014 22:00
quelle

Tags und Links