Eine der häufigsten Aufgaben beim Schreiben von Bash-Skripten oder Arbeiten an der Linux-Befehlszeile ist das Lesen und Schreiben von Dateien.
Dieser Artikel erklärt, wie man Text in eine Datei in Bash schreibt, indem man die Umleitungsoperatoren und tee verwendet Befehl.
Schreiben in eine Datei mit Umleitungsoperatoren #
In Bash ermöglicht Ihnen die Umleitung der Ausgabe, die Ausgabe eines Befehls zu erfassen und in eine Datei zu schreiben.
Das allgemeine Format zum Umleiten und Schreiben der Ausgabe in eine Datei lautet wie folgt:
output > filename
output >> filename
- Der
>Der Umleitungsoperator schreibt die Ausgabe in eine angegebene Datei. Wenn die Datei vorhanden ist, wird sie auf die Länge null gekürzt. Andernfalls wird die Datei erstellt. Seien Sie besonders vorsichtig, wenn Sie diesen Operator verwenden, da Sie möglicherweise eine wichtige Datei überschreiben. - Der
>>Der Umleitungsoperator hängt die Ausgabe an eine bestimmte Datei an. Die Datei wird erstellt, wenn sie nicht existiert.
Sie benötigen Schreibrechte für die Datei. Andernfalls erhalten Sie eine Fehlermeldung zur Verweigerung der Berechtigung.
Hier ist ein einfaches Beispiel, das zeigt, wie die Ausgabe von echo umgeleitet wird Befehl in eine Datei:
echo "this is a line" > file.txt
Um das Überschreiben vorhandener Dateien zu verhindern, aktivieren Sie die Option „noclobber“ mit dem set eingebaut:
set -o noclobberecho "this is a line" > file.txt
bash: file.txt: cannot overwrite existing file
Der >| Mit dem Operator können Sie die Bash-Option „noclobber“ überschreiben:
set -o noclobberecho "this is a line" >| file.txt
Der >> Operator die Ausgabe an das Ende der Datei anhängen, anstatt die Datei zu überschreiben:
echo "this is a line" >> file.txt
Verwenden Sie den printf Befehl zum Erstellen einer komplexen Ausgabe:
printf "Hello, I'm %s.\n" $USER > file.txt Wenn Sie mehrere Zeilen in eine Datei schreiben möchten, verwenden Sie die Here-Dokument(Heredoc)-Umleitung.
Beispielsweise können Sie den Inhalt an cat übergeben Befehl und schreibe ihn in eine Datei:
cat << EOF > file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF
Um die Zeilen anzuhängen, ändern Sie > mit >> vor dem Dateinamen:
cat << EOF >> file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF
Sie können die Ausgabe jedes Befehls in eine Datei schreiben:
date +"Year: %Y, Month: %m, Day: %d" > file.txt
Die Ausgabe des date Befehl wird in die Datei geschrieben.
Schreiben in eine Datei mit dem tee Befehl #
Das tee Der Befehl liest von der Standardeingabe und schreibt gleichzeitig sowohl in die Standardausgabe als auch in eine oder mehrere Dateien.
echo "this is a line" | tee file.txt
Das tee Das Standardverhalten des Befehls besteht darin, die angegebene Datei zu überschreiben, genau wie > Operator. Um die Ausgabe an die Datei anzuhängen, rufen Sie den Befehl mit -a auf (--append ) Option:
echo "this is a line" | tee -a file.txt
Wenn Sie das tee nicht möchten Um in die Standardausgabe zu schreiben, können Sie sie nach /dev/null umleiten :
echo "this is a line" | tee file.txt >/dev/null
Um den Text in mehr als eine Datei zu schreiben, geben Sie die Dateien als Argumente für tee an Befehl:
echo "this is a line" | tee file_1.txt file_2.txt file_3.txt
Ein weiterer Vorteil des tee Befehl ist, dass Sie ihn in Verbindung mit sudo verwenden können und in Dateien schreiben, die anderen Benutzern gehören. Um Text an eine Datei anzuhängen, für die Sie keine Schreibberechtigung haben, stellen Sie sudo voran vor tee :
echo "this is a line" | sudo tee file.txt
Das echo Die Befehlsausgabe wird als Eingabe an tee übergeben , das die sudo-Berechtigungen erhöht und den Text in die Datei schreibt.
Schlussfolgerung #
Um unter Linux Text in eine Datei zu schreiben, verwenden Sie > und >> Umleitungsoperatoren oder das tee Befehl.