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

Wie drucke ich die Linux-Befehlsausgabe in eine Datei?

Verwenden Sie den > Betreiber:

rsync -v > log.txt

schreibt die Ausgabe des rsync-Befehls in eine Datei namens log.txt .


Sie können Ihr Skript aufrufen und die "Standardausgabe" (AKA STDOUT) in eine Protokolldatei umleiten. Verwenden Sie '>>', um an die Protokolldatei anzuhängen, oder '>', um die Protokolldatei zu überschreiben. Die Datei wird erstellt (wenn die Berechtigungen für ihr Verzeichnis dies zulassen), wenn sie noch nicht existiert. Wenn die Datei bereits existiert, vergewissern Sie sich, dass sie von Ihnen (oder demjenigen, der Ihr Skript ausführt) beschreibbar ist.

Wenn Sie immer an die Protokolldatei anhängen, anstatt sie zu überschreiben, sollten Sie von Anfang an sicherstellen, dass etwas Ihre Protokolldatei "rotiert", dh sie unter einen anderen Namen verschiebt und ältere Protokolldateien entfernt. Wenn die Protokolldatei für Ihr Skript eindeutig ist, können Sie Ihr Skript die Rotation der Protokolldatei übernehmen lassen.

Normalerweise ist der bevorzugte Weg, Ihr Skript mit umgeleitetem STDOUT aufzurufen, aber es kann vorkommen, dass Sie die Umleitung innerhalb des Skripts selbst für einen oder mehrere Befehle durchführen möchten. Sie können ">> logfile" nach jeder Anweisung in einem Shell-Skript hinzufügen, um STDOUT dieses Befehls an die Protokolldatei anzuhängen. Sie können dies in "2>&1>> Protokolldatei" ändern, um sowohl "Standardfehler" (AKA STDERR) als auch anzuhängen STDOUT zur Protokolldatei. Sie möchten normalerweise nicht, dass STDERR auch in die Protokolldatei geht, da STDERR normalerweise verwendet wird, um denjenigen zu benachrichtigen, der das Skript über ein Problem ausführt. Aber es gibt Zeiten und Situationen, wo man das will. Wenn Sie möchten, können Sie Befehle in Ihrem Skript innerhalb von { und } gruppieren und STDOUT der gesamten Gruppe auf einmal umleiten, indem Sie die Umleitung nach dieser schließenden Klammer setzen.


Wenn Sie darüber hinaus neugierig sind, die Ausgabe auf dem Bildschirm UND in einer Datei zum Archivieren/Grepping/usw. zu sehen, möchten Sie vielleicht "tee " die Ausgabe. Es ist ein großartiger Befehl und ist nach dem T-Rohr benannt, das in der realen Installation zu finden ist, und funktioniert gut für "Unterkonsolen" wie mysql usw.

Der Befehl ist tee ... hier ist ein Beispiel, das von einem Benutzer namens "toydi" kopiert wurde:

Um die Ausgabe eines Befehls gleichzeitig anzuzeigen und zu protokollieren:ls -l | tee -a file.log In diesem Beispiel wird die Ausgabe der Verzeichnisliste angezeigt und die Ausgabe auch in file.log gespeichert. Die Option -a signalisiert dem Befehl, die Datei anzuhängen, anstatt sie zu überschreiben.

Überprüfen Sie auch das Bild auf Wikipedia für eine schöne Visualisierung, wie Tee funktioniert. Ich würde darauf verlinken, aber ich habe nicht genug "Reputationspunkte", um mehr als 1 Link zu posten, und ich fand, dass "Toydi" die Link-Anerkennung verdient hat :)


Linux
  1. So weisen Sie einer Variablen die Ausgabe eines Linux-Befehls zu

  2. So speichern Sie die Befehlsausgabe in einer Datei unter Linux

  3. Wie hängt man die Ausgabe an eine Datei an?

  4. Wie erfasst man die Ausgabe eines Top-Befehls in einer Datei unter Linux?

  5. Wie kann die Ausgabe des Zeitbefehls in eine Datei unter Linux umgeleitet werden?

So verwenden Sie einen Dateibefehl unter Linux

So öffnen Sie eine Datei unter Linux

So drucken Sie doppelte Zeilen in einer Textdatei unter Linux

So mischen Sie Zeilen in einer Datei unter Linux

So verwenden Sie den Befehl lsof unter Linux

So verwenden Sie den Linux-Befehl shred