GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausführen Kombinieren Sie mehrere Linux-Befehle in einer Zeile

Sie können Ihre Befehle mit einem Semikolon trennen:

cd /my_folder;rm *.jar;svn co path to repo;mvn compile package install

Meinten Sie das?


Wenn Sie jeden Befehl nur ausführen möchten, wenn der vorherige erfolgreich war, kombinieren Sie sie mit && Betreiber:

cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install

Wenn einer der Befehle fehlschlägt, werden alle anderen folgenden Befehle nicht ausgeführt.

Wenn Sie alle Befehle unabhängig davon ausführen möchten, ob die vorherigen fehlgeschlagen sind oder nicht, trennen Sie sie mit Semikolons:

cd /my_folder; rm *.jar; svn co path to repo; mvn compile package install

In Ihrem Fall möchten Sie meiner Meinung nach den ersten Fall, in dem die Ausführung des nächsten Befehls vom Erfolg des vorherigen abhängt.

Sie können auch alle Befehle in ein Skript packen und dieses stattdessen ausführen:

#! /bin/sh

cd /my_folder \
&& rm *.jar \
&& svn co path to repo \
&& mvn compile package install

Die Backslashes am Ende der Zeile sollen verhindern, dass die Shell denkt, dass die nächste Zeile ein neuer Befehl ist; Wenn Sie die umgekehrten Schrägstriche weglassen, müssten Sie den gesamten Befehl in einer einzigen Zeile schreiben.

Eine bequemere Methode im Vergleich zur Verwendung von Backslashes und && Überall wird die Shell angewiesen, das Skript zu beenden, wenn einer der Befehle fehlschlägt. Das machst du mit dem set eingebaute Funktion mit dem -e Streit. Damit können Sie ein Skript viel natürlicher schreiben:

#! /bin/sh
set -e

cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install

Speichern Sie das in einer Datei, zum Beispiel myscript , und machen Sie es ausführbar:

chmod +x myscript

Sie können dieses Skript jetzt wie andere Programme auf dem Computer ausführen. Aber wenn Sie es nicht in einem Verzeichnis platzieren, das in Ihrem PATH aufgeführt ist Umgebungsvariable (zum Beispiel /usr/local/bin , oder bei einigen Linux-Distributionen ~/bin ), dann müssen Sie den Pfad zu diesem Skript angeben. Wenn es sich im aktuellen Verzeichnis befindet, führen Sie es aus mit:

./myscript

Die Befehle im Skript funktionieren genauso wie die Befehle im ersten Beispiel; der nächste Befehl wird nur ausgeführt, wenn der vorherige erfolgreich war. Rufen Sie zur bedingungslosen Ausführung aller Befehle einfach set -e nicht auf :

#! /bin/sh

cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install

Ich habe das mit; Befehle zu trennen funktioniert nur im Vordergrund. zB :

cmd1; cmd2; cmd3 & - führt nur cmd3 aus im Hintergrund, während cmd1 && cmd2 && cmd3 & - führt die gesamte Kette im Hintergrund aus, wenn keine Fehler vorliegen.

Um eine bedingungslose Ausführung zu ermöglichen, löst die Verwendung von Klammern Folgendes:

(cmd1; cmd2; cmd3) & - Führt die Befehlskette im Hintergrund aus, auch wenn irgendein Schritt fehlschlägt.


Um sie alle auf einmal auszuführen, können Sie die Pipeline-Taste "|" verwenden. etwa so:

$ cd /my_folder | rm *.jar | svn co path to repo | mvn compile package install

Linux
  1. Unix Sed Tutorial:So führen Sie mehrere Sed-Befehle aus

  2. Grundlagen der Linux-Befehlszeile – Ausführen von Befehlen über die Befehlszeile

  3. Führen Sie Shell-Befehle aus einem Programm aus, das in WINE ausgeführt wird

  4. E-Mail vom Linux-Terminal in einer Zeile senden

  5. matlab Skript von der Linux-Befehlszeile ausführen

Ausführen von Befehlen auf Remote-Linux-Systemen über SSH

Kopieren Sie eine Datei in mehrere Verzeichnisse von der Befehlszeile unter Linux

So führen Sie mehrere Linux-Befehle in einem einzigen Befehl aus

So führen Sie unter Linux mehrere PDF-Dateien zu einem PDF zusammen

So führen Sie mehrere Linux-Befehle gleichzeitig im Linux-Terminal aus

5 Befehle zum Anzeigen des Inhalts einer Datei in der Linux-Befehlszeile