Wie kann ich meine Shell-Skripte automatisch in einer neuen Konsole ausführen lassen?

7

Hallo, ich verwende Ubuntu 10.04 und lerne das ROS (Robot Operating System), was bedeutet, dass ich ziemlich viele Shell-Befehle eingebe

Ich erstelle derzeit einige BASH-Skriptdateien, um meine Arbeit zu erleichtern, aber es gibt bestimmte Befehle, die in einer anderen Konsole ausgeführt werden müssen .

Sagen Sie mir also bitte, welche Befehle ich in meine .sh-Datei schreiben muss, damit die Befehle in einem Fenster ausgeführt werden können, und starten Sie dann ein anderes Fenster, in dem andere Befehle ausgeführt werden, jedoch aus derselben .sh-Datei

Oder sie befinden sich in verschiedenen .sh-Dateien, die nur in verschiedenen Konsolen ausgeführt werden müssen.

Bora George
quelle
Können Sie genau beschreiben, was Sie wollen? Mögliche Lösungen sind screendas gnome-terminal -e "command"Ausführen eines Befehls im Hintergrund mit nohup und dem &nohup command &
Panther
Zum Beispiel muss ich den Befehl 'rosrun turtlesim turtlesim_node' in einer neuen Konsole ausführen, dann muss ich andere Befehle in anderen neuen Konsolen ausführen. Und ich möchte dies aus einer einzigen .sh-Datei heraus tun.
Bora George
Außerdem habe ich vergessen, diese Befehle hinzuzufügen, die nicht im Hintergrund ausgeführt werden sollten.
Bora George

Antworten:

5

Sie könnten Ihr Skript in einem anderen Terminalemulatorfenster ausführen, nehme ich an, gnome-terminalmit dem Befehl

gnome-terminal -x ./script

Sie können den Prozess zum Definieren einer Funktion in Ihrem Computer vereinfachen ~/.bashrc

start() {
  gnome-terminal -x "$@"
}

wo können Sie den Namen wählen, den Sie anstelle von bevorzugen start. Sie verwenden die Funktion auf diese Weise

start ./command arg1 arg2

(Sie müssen das Terminal neu starten, damit die Shell über die neue Funktion informiert wird.)

Wie Sie sehen, gibt es ein kleines Problem: Das Fenster wird geschlossen, sobald der Befehl beendet wird. Um dies zu vermeiden, können Sie Ihren Befehl in ein Shell-Skript einschließen und eine letzte Zeile mit einem readBefehl hinzufügen :

#!/bin/sh
# script

./command arg1 arg2
read answer

Dann, wenn Sie anrufen

start ./script

Es wird nicht geschlossen und wartet auf Ihre Eingabe.

Leider ist es schwierig, dies in der startFunktion zu automatisieren .

Enzotib
quelle
Vielen Dank, alle Antworten waren hilfreich, aber ich habe herausgefunden, dass rosBefehle ein Problem mit dem the gnome-terminal-xBefehl haben.
Bora George
@BoraGeorge: Ich habe die Antwort aktualisiert, um das Schließen des Fensters zu berücksichtigen.
Enzotib