Skript zum Ausführen eines Befehls in einem Terminal und anschließendem Öffnen einer neuen Terminalregisterkarte und Ausführen eines weiteren Befehls

Skript zum Ausführen eines Befehls in einem Terminal und anschließendem Öffnen einer neuen Terminalregisterkarte und Ausführen eines weiteren Befehls

Ich verwende Ubuntu 21.04 und möchte ein Skript erstellen, das Folgendes tut:

  1. Laufen:

    cd && cd path/to/repo && git pull && npm i && code . && npm run dev
    
  2. Öffnen Sie dann eine neue Registerkarte im GNOME-Terminal mit:

    gnome-terminal --tab
    
  3. Wechseln Sie dann zu dieser Registerkarte und führen Sie aus:

    cd && cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev
    

Im Grunde möchte ich also ein Terminal mit zwei Tabs, auf denen zwei Entwicklungsserver laufen.

Ich habe es mit xdotoolund versucht xte, aber es hat nie funktioniert (die Tasten werden nicht einmal gedrückt).

Ist es überhaupt möglich, das zu tun, was ich will?

Ich habe es wie unten vorgeschlagen versucht, es hat mir nicht geholfen, failed to run cdalso habe ich gegoogelt und bin auf Folgendes gestoßen:

gnome-terminal --tab -- /bin/bash -e -c "cd path/to/repo && ls && git pull && npm i && code . && npm run dev" --tab -- /bin/bash -e -c "cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev"

Das Problem ist jedoch, dass npm run deves nie aufhören soll und daher die zweite Terminal-Registerkarte nie geöffnet wird. Und ich muss sie zusammen ausführen ...

Antwort1

Obwohl gnome-terminaldarauf hingewiesen wird, dass die -eOption veraltet ist, funktioniert sie in 3.40.3 immer noch.

# Option “-e” is deprecated and might be removed in a later version of gnome-terminal.
# Use “-- ” to terminate the options and put the command line to execute after it.

Entwickler scheinen zu vergessen, dass dies die einzige Möglichkeit ist, das zu tun, was Sie wollen, nämlich automatisch verschiedene Arbeitsumgebungen in Tabs einzurichten. Die „neue“ Syntax, die am Ende der Optionen auszuführende Befehle hinzufügt, --erlaubt dies nicht. Sobald die -eOption entfernt ist, müssen Sie für so etwas zu einem anderen Terminalemulator wechseln.

So funktioniert beispielsweise das hier bislang noch:

gnome-terminal --tab -e "htop" --tab -e "top"

Ersetzen Sie Befehle htopdurch topIhre benutzerdefinierten Skripts.

Antwort2

Der Inhalt des SH-Skripts ist also:

gnome-terminal --tab --title='frontend' -e "bash -c 'cd path/to/repo && git pull && npm i && code . && npm run dev'";
gnome-terminal --tab --title='backend' -e "bash -c 'cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev'"

Danke @vanadium für die Hilfe beim Herausfinden der Googeln-Richtung ;)

es funktioniert wie vorgesehen. Wenn ich ein Terminal öffne und schreibe, sh myScript.shwerden zwei zusätzliche Tabs mit laufenden Backend- und Frontend-Repos geöffnet.

Ein kleines Problem besteht darin, dass, wenn ich die sh-Datei durch Doppelklicken ausführe, zwei Terminalfenster geöffnet werden (hässlich, ich möchte Tabs).

Ich weiß nicht wirklich, wie ich das beheben kann.

verwandte Informationen