Wie führt man einen Befehl automatisch aus, wenn ein bestimmter Befehl beendet wird?

Wie führt man einen Befehl automatisch aus, wenn ein bestimmter Befehl beendet wird?

Beispiel: Nach add-apt-repositoryBeendigung des Prozesses sofort ausführen apt-get update- ohne den Befehl manuell eingeben zu müssen.

Gibt es eine Möglichkeit, dies zu tun? Ist es möglich, eine solche Kombination festzulegen, ohne das sudoPasswort zu verwenden? (obwohl mir beides egal ist)

Ich frage folgendes:Wie kann ich zwei Befehle miteinander verknüpfen, so dass jedes Mal, wenn ich einen bestimmten Befehl ausführe, dieserstetsführt den verknüpften Befehl danach aus?

Antwort1

Wie immer

sudo bash -c "command1; command2"

Wenn Sie command2 erst ausführen möchten, nachdem command1 erfolgreich abgeschlossen wurde, können Sie as &&statt verwenden ;.

sudo bash -c "command1 && command2"

Ich verwende für Ihr Beispiel den folgenden Befehl.

sudo bash -c "add-apt-repository <repo> && apt-get update"

Antwort2

Es gibt verschiedene Probleme, wenn man sich hier mit einem Alias ​​oder einer einfachen Bash-Funktion einklinkt, aber Sie können einen kleinen Wrapper für einen Befehl schreiben und ihn dort einfügen, /usr/local/binwo er in Ihrem Pfad Priorität hat.

Das ist einkleiner Trick, um ein Skript zu erstellen und es gleichzeitig zu chmodden. Es wird ein ausführbares Wrapper-Skript in .
abgelegt ./usr/local/bin/add-apt-repository

sudo install -b -m 755 /dev/stdin /usr/local/bin/add-apt-repository << 'EOF'
#!/bin/sh
/usr/bin/add-apt-repository "$@"
apt-get update
EOF 

Um dies rückgängig zu machen, löschen Sie einfach /usr/local/bin/add-apt-repository.

Wenn Sie etwas Fruchtbareres tun möchten (wie Verknüpfen apt-get install, apt-get updatesodass Sie vor der Installation immer aktualisieren), müssen wir nur das Skript erweitern, um uns die Argumente anzusehen.

sudo install -b -m 755 /dev/stdin /usr/local/bin/apt-get << 'EOF'
#!/bin/sh
if [ "$1" = "install" ] ; then
    /usr/bin/apt-get update
fi
/usr/bin/apt-get "$@"
EOF 

Bedenken Sie jedoch, dass dadurch ein Update ausgeführt wird, bevorjeden apt-get installAnruf. Das klingt vielleicht hilfreich, kann in der Praxis aber sehr mühsam sein.

Antwort3

Um bestimmte Befehle in einer bestimmten Reihenfolge auszuführen, wird Shell-Scripting verwendet. Alles was Sie tun müssen, ist: - Öffnen Sie das Terminal durch Drücken von Ctrl+ Alt+ T und folgen Sie den Schritten:
1. Geben Sie ein gedit filename.sh
2. Nach Eingabe dieses Befehls öffnet sich ein Texteditor, in den Sie die erforderlichen Befehle einzeln in jede Zeile eingeben können. Beispiel:
sudo add-apt-repository
apt-get update
3. Nachdem Sie alle Befehle eingegeben haben, speichern Sie und beenden Sie das Programm entweder über die GUI oder durch Drücken von Ctrl+ Sund Ctrl+ Q.
4. Jetzt kehren Sie zum Terminal zurück. Führen Sie es sh filename.shim Terminal aus und Ihre Befehle werden ausgeführt, vorausgesetzt, sie enthalten keine Fehler.
Wenn Sie sich über ein Superuser-Konto (root) anmelden, müssen Sie sudoIhren Befehl nicht eingeben.

Antwort4

Der einfachste Weg, dies zu tun, besteht darin, Folgendes auszuführen:

sudo add-apt-repository <ppa_name> && sudo apt-get update

Wenn der erste Befehl erfolgreich abgeschlossen wurde, wird der zweite ausgeführt.

verwandte Informationen