Der >
Redirector schreibt die Ausgabe des Befehls ( stdout
nicht stderr
- Sie verwenden sie 2>
dafür) in die danach angegebene Datei. Wenn es bereits existiert, wird die Datei überschrieben.
Dieses Verhalten ist nützlich für den ersten Ihrer Befehle: Wenn eine Datei vorhanden ist, sollte diese gelöscht und durch die neue ersetzt werden.
Da Sie jedoch alle weiteren Ausgaben anhängen müssen, anstatt die vorherigen zu ersetzen, müssen Sie den Append-Redirector verwenden >>
. Dadurch wird eine Datei erstellt, falls sie noch nicht vorhanden ist, die umgeleitete Ausgabe wird jedoch an die Datei angehängt , sofern sie bereits vorhanden ist.
Verwenden Sie die Pipe nicht |
, um mehrere Befehle in eine Zeile zu schreiben. Dadurch würde die Ausgabe ( stdout
) des ersten Befehls auf die Eingabe ( stdin
) des zweiten Befehls umgeleitet .
Mit dem Semikolon ( ;
) können Sie bash einfach anweisen, einen Befehl nach dem anderen auszuführen, als wäre es eine Skriptdatei. Wenn ein Befehl fehlschlägt (der Rückkehrcode ist nicht 0), werden die verbleibenden Befehle weiterhin ausgeführt.
Oder Sie können die logischen Operatoren AND ( &&
) oder OR ( ||
) wählen :
Wenn Sie &&
zwei Befehle verbinden, wird der zweite nur ausgeführt, wenn der erste erfolgreich ist (Rückkehrcode ist 0). Wenn dies fehlschlägt, wird keiner der folgenden Befehle ausgeführt.
Der zweite Befehl wird ||
jedoch nur ausgeführt, wenn der erste fehlgeschlagen ist (Rückkehrcode ungleich 0)!
In Ihrem Fall würde ich Ihnen empfehlen, das Semikolon zu verwenden:
md5sum firefox.tar.gz > sha.txt ; sha1sum firefox.tar.gz >> sha.txt ; sha512sum firefox.tar.gz >> sha.txt
{}
oder()
? Vielen Dank.