Gelegentlich möchte man beim Umgang mit Dateien im Linux-Terminal den Inhalt einer Datei löschen, ohne sie unbedingt mit einem Linux-Befehlszeilen-Editor zu öffnen. Wie kann dies erreicht werden? In diesem Artikel werden wir verschiedene Möglichkeiten zum Leeren von Dateiinhalten mit Hilfe einiger nützlicher Befehle durchgehen.
Achtung: Bevor wir uns die verschiedenen Möglichkeiten ansehen, sollten Sie beachten, dass in Linux alles eine Datei ist und Sie immer sicherstellen müssen, dass es sich bei den Dateien, die Sie leeren wollen, nicht um wichtige Benutzer- oder Systemdateien handelt. Das Löschen des Inhalts einer kritischen System- oder Konfigurationsdatei könnte zu einem fatalen Anwendungs-/Systemfehler oder -ausfall führen.
Nachfolgend finden Sie einige Möglichkeiten, den Inhalt von Dateien über die Befehlszeile zu löschen.
Wichtig: Für die Zwecke dieses Artikels haben wir in den folgenden Beispielen die Datei access.log
verwendet.
Dateiinhalt durch Umleitung auf Null leeren
Am einfachsten lässt sich der Inhalt einer Datei leeren, indem man den Shell-Redirect null
(nicht existierendes Objekt) auf die Datei wie folgt verwendet:
# > access.log
Empty File Using ‚true‘ Command Redirection
Hier werden wir ein Symbol verwenden :
ist ein eingebauter Shell-Befehl, der essentiell äquivalent zum true
-Befehl ist und als no-op (keine Operation) verwendet werden kann.
Eine andere Methode besteht darin, die Ausgabe des eingebauten Befehls :
oder true
wie folgt in die Datei umzuleiten:
# : > access.logOR # true > access.log
Leere Datei mit cat/cp/dd-Werkzeugen mit /dev/null verwenden
In Linux wird das null
-Gerät grundsätzlich zum Verwerfen von unerwünschten Ausgabeströmen eines Prozesses oder als geeignete leere Datei für Eingabeströme verwendet. Dies geschieht normalerweise durch einen Umleitungsmechanismus.
Die /dev/null
-Gerätedatei ist also eine spezielle Datei, die alle Eingaben, die an sie gesendet werden, abschreibt (entfernt) oder deren Ausgabe der einer leeren Datei entspricht.
Außerdem kann man den Inhalt einer Datei leeren, indem man die Ausgabe von /dev/null
als Eingabe mit dem Befehl cat dorthin umleitet:
# cat /dev/null > access.log
Als Nächstes werden wir den Befehl cp verwenden, um den Inhalt einer Datei zu löschen, wie gezeigt.
# cp /dev/null access.log
Im folgenden Befehl steht if
für die Eingabedatei und of
für die Ausgabedatei.
# dd if=/dev/null of=access.log
Leere Datei mit dem echo-Befehl
Hier können Sie einen echo-Befehl mit einer leeren Zeichenfolge verwenden und ihn wie folgt an die Datei weiterleiten:
# echo "" > access.logOR# echo > access.log
Hinweis: Sie sollten bedenken, dass eine leere Zeichenkette nicht dasselbe ist wie null. Eine Zeichenkette ist bereits ein Objekt, genauso wie sie leer sein kann, während null einfach die Nichtexistenz eines Objekts bedeutet.
Aus diesem Grund wird, wenn Sie das Ergebnis des obigen echo-Befehls in die Datei umleiten und den Inhalt der Datei mit dem cat-Befehl anzeigen, eine leere Zeile (leere Zeichenkette) gedruckt.
Um eine Nullausgabe an die Datei zu senden, verwenden Sie das Flag -n
, das echo anweist, den abschließenden Zeilenumbruch nicht auszugeben, der zu der im vorherigen Befehl erzeugten leeren Zeile führt.
# echo -n "" > access.log
Leere Datei mit truncate-Befehl
Der truncate-Befehl hilft, eine Datei auf eine bestimmte Größe zu verkleinern oder zu vergrößern.
Sie können ihn mit der Option -s
verwenden, die die Dateigröße angibt. Um den Inhalt einer Datei zu leeren, verwenden Sie eine Größe von 0 (Null), wie im folgenden Befehl:
# truncate -s 0 access.log
Das war’s fürs Erste, in diesem Artikel haben wir mehrere Methoden zum Löschen oder Leeren von Dateiinhalten mit einfachen Befehlszeilen-Dienstprogrammen und Shell-Umleitungsmechanismen behandelt.
Dies sind wahrscheinlich nicht die einzigen praktischen Möglichkeiten, die zur Verfügung stehen, daher können Sie uns auch andere Methoden, die in dieser Anleitung nicht erwähnt wurden, über den Feedback-Bereich unten mitteilen.