
In einigen Situationen möchten Sie möglicherweise eine vorhandene Datei auf eine Länge von Null kürzen (leeren). Einfach ausgedrückt bedeutet das Abschneiden einer Datei, dass der Dateiinhalt entfernt wird, ohne die Datei zu löschen.
Das Abschneiden einer Datei ist viel schneller und einfacher als das Löschen der Datei, das erneute Erstellen und das Festlegen der richtigen Berechtigungen und Eigentumsrechte. Wenn die Datei von einem Prozess geöffnet wird, kann das Entfernen der Datei außerdem zu einer Fehlfunktion des Programms führen, das sie verwendet.
Dieses Tutorial erklärt, wie Sie Dateien in Linux-Systemen mithilfe der Shell-Umleitung und dem Befehl truncate
auf Nullgröße kürzen Befehl.
Shell-Umleitung #
Die einfachste und am häufigsten verwendete Methode zum Abschneiden von Dateien ist die Verwendung von >
Shell-Umleitungsoperator.
Das allgemeine Format zum Abschneiden von Dateien mit Umleitung ist:
: > filename
Lassen Sie uns den Befehl aufschlüsseln:
- Der
:
Doppelpunkt bedeutettrue
und erzeugt keine Ausgabe. - Der Umleitungsoperator
>
leitet die Ausgabe des vorhergehenden Befehls in die angegebene Datei um. filename
, die Datei, die Sie kürzen möchten.
Wenn die Datei existiert, wird sie auf Null gekürzt. Andernfalls wird die Datei erstellt.
Statt :
kann auch einen anderen Befehl verwenden, der keine Ausgabe erzeugt.
Hier ist ein Beispiel für die Verwendung von cat
Befehl, um den Inhalt von /dev/null
auszugeben device, das nur ein Dateiendezeichen zurückgibt:
cat /dev/null > filename
Ein weiterer verwendbarer Befehl ist echo
. Das -n
Option teilt echo
mit keinen Zeilenumbruch anhängen:
echo -n > filename
Auf den meisten modernen Shells wie Bash oder Zsh können Sie den Befehl vor dem Umleitungssymbol weglassen und verwenden:
> filename
Um eine Datei kürzen zu können, benötigen Sie Schreibrechte für die Datei. Normalerweise würden Sie sudo
verwenden dafür, aber die erhöhten Root-Rechte gelten nicht für die Umleitung. Hier ist ein Beispiel:
sudo : > /var/log/syslog
bash: /var/log/syslog: Permission denied
Es gibt mehrere Lösungen, die eine Weiterleitung mit sudo
ermöglichen . Die erste Option kann eine neue Shell mit sudo ausführen und einen Befehl innerhalb dieser Shell mit -c
ausführen Flagge:
sudo sh -c '> filename'
Eine andere Möglichkeit besteht darin, die Ausgabe zum tee
zu leiten Befehl, heben Sie das tee
an Privilegien mit sudo
, und schreiben Sie die leere Ausgabe in eine bestimmte Datei:
: | sudo tee filename
truncate
Befehl #
truncate
ist ein Befehlszeilenprogramm, mit dem Sie die Größe einer Datei auf eine bestimmte Größe verkleinern oder erweitern können.
Die allgemeine Syntax zum Abschneiden von Dateien auf Nullgröße mit truncate
Befehl lautet wie folgt:
truncate -s 0 filename
Das -s 0
Option setzt die Dateigröße auf Null.
Um beispielsweise das Nginx-Zugriffsprotokoll zu leeren, würden Sie Folgendes verwenden:
sudo truncate -s 0 /var/log/nginx/access.log
Alle Protokolldateien leeren #
Im Laufe der Zeit kann Ihr Laufwerk mit vielen großen Protokolldateien überladen werden, die viel Speicherplatz beanspruchen.
Der folgende Befehl leert Dateien mit der Endung „.log“ unter /var/log
Verzeichnis:
sudo truncate -s 0 /var/log/**/*.log
Eine bessere Option wäre, die Protokolldateien mit logrotate
zu rotieren, zu komprimieren und zu entfernen Werkzeug.
Schlussfolgerung #
Um eine Datei unter Linux zu kürzen, verwenden Sie den Umleitungsoperator >
gefolgt vom Dateinamen.
Wenn Sie Fragen oder Anmerkungen haben, hinterlassen Sie bitte unten einen Kommentar.