logo

Bash In eine Datei schreiben

Wenn wir einen Befehl in einer Bash-Shell ausführen, gibt sie im Allgemeinen die Ausgabe dieses Befehls an das Terminal aus, damit wir sie sofort lesen können. Bash bietet aber auch eine Option, um die Ausgabe eines beliebigen Bash-Befehls in eine Protokolldatei umzuleiten. Die Ausgabe kann in einer Textdatei gespeichert werden, sodass wir sie später bei Bedarf überprüfen können.

Methode 1: Ausgabe nur in eine Datei schreiben

Um die Ausgabe von Bash-Befehlen in eine Datei zu schreiben, können wir das Zeichen einer rechten spitzen Klammer (>) oder ein doppeltes rechtwinkliges Zeichen (>>) verwenden:

Rechtwinkliges Klammerzeichen (>)

Es wird verwendet, um die Ausgabe des Bash-Befehls in eine Festplattendatei zu schreiben. Wenn keine Datei mit dem angegebenen Namen vorhanden ist, wird eine neue Datei mit demselben Namen erstellt. Wenn die Datei mit dem angegebenen Namen vorhanden ist, wird der Inhalt der Datei überschrieben.

Doppeltes rechtwinkliges Zeichen (>>)

Es wird verwendet, um die Ausgabe von Bash-Befehlen in eine Datei zu schreiben und die Ausgabe an den vorhandenen Inhalt der Datei anzuhängen. Wenn die Datei nicht vorhanden ist, wird eine neue mit dem angegebenen Namen erstellt.

Technisch gesehen leiten diese beiden Operatoren „stdout (die Standardausgabe)“ in eine Datei um.

Wenn wir die Datei zum ersten Mal schreiben und nicht möchten, dass frühere Daten in der Datei vorhanden sind, sollten wir auf einfache Weise das Zeichen der rechten spitzen Klammer (>) verwenden. Der Inhalt wird überschrieben, wenn er bereits in der Datei vorhanden ist. Und im weiteren Skript können wir das doppelte rechtwinklige Zeichen (>>) verwenden, um die Daten an eine Datei anzuhängen.

Beispiel

Mit dem Befehl „ls“ werden alle im aktuellen Verzeichnis vorhandenen Dateien und Ordner gedruckt. Wenn wir jedoch den Befehl „ls“ mit einem rechten spitzen Klammerzeichen (>) ausführen, wird die Liste der Dateien und Ordner nicht auf dem Bildschirm gedruckt. Die Ausgabe wird in der von uns angegebenen Datei gespeichert, d. h. wie unten gezeigt:

Bash-Skript

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Checking the content of the file gedit output_file.txt 

Ausgabe

Bash-Schreibdatei

Wie hier gezeigt, wird die Ausgabe des Befehls „ls“ in eine Datei umgeleitet. Um den Inhalt einer Datei auf dem Terminal auszugeben, können wir den Befehl „cat“ in der folgenden Form verwenden:

Bash-Skript

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Printing the content of the file cat $output 

Ausgabe

Bash-Schreibdatei

Wenn wir die Ausgabe mehrerer Befehle in eine einzige Datei umleiten möchten, ohne die verfügbaren Daten zu löschen, können wir den Operator >> verwenden. Angenommen, wir möchten die Systeminformationen an die angegebene Datei anhängen. Dies können wir folgendermaßen tun:

Bash-Skript

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Appending the system information uname -a >> $output #Checking the content of the file gedit output_file.txt 

Ausgabe

Bash-Schreibdatei

Hier wird das Ergebnis des zweiten Befehls an das Ende der Datei angehängt.

Array-Liste sortieren

Wir können diesen Vorgang mehrmals wiederholen, um die Ausgabe weiterhin an das Ende der Datei anzuhängen.

Methode 2: Ausgabe normal drucken und in eine Datei schreiben

Manche Leute mögen es möglicherweise nicht, Ausgaben mit den Operatoren > oder >> in eine Datei zu schreiben, da der Befehl im Terminal nicht ausgegeben wird. Aus diesem Grund wird der Befehl „tee“ verwendet. Der Befehl „tee“ wird verwendet, um die empfangene Eingabe auf dem Bildschirm auszugeben. Die Ausgabe kann gleichzeitig in einer Datei gespeichert werden.

Bash-Skript

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls | tee $output 

Ausgabe

Bash-Schreibdatei

Dies überschreibt den Inhalt der Datei, genau wie der Operator >, druckt aber auch die Ausgabe auf dem Bildschirm.

Wenn wir die Ausgabe in eine Datei schreiben möchten, ohne den Inhalt der Datei mit dem Befehl tee zu entfernen, können wir das folgende Formular verwenden, das die Ausgabe auch auf dem Terminal ausgibt:

Bash-Skript

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt echo '<<>>' | tee -a $output #Write data to a file ls | tee $output echo | tee -a $output #Append System Information to the file echo '<<>>' | tee -a $output uname | tee -a $output 

Ausgabe

Bash-Schreibdatei

Dadurch wird die Ausgabe nicht nur an das Ende der Datei angehängt, sondern auch auf dem Bildschirm gedruckt.