Wie lösche ich den Inhalt einer Datei von der Befehlszeile?

Ich habe eine Protokolldatei mit einer Reihe von Dingen, die ich nicht mehr brauche. Ich möchte den Inhalt löschen.

Ich weiß, wie man den Inhalt auf den Bildschirm druckt:

cat file.log

Ich weiß, wie man die Datei Zeile für Zeile bearbeitet:

nano file.log

Aber ich möchte nicht jede Zeile einzeln löschen. Gibt es eine Möglichkeit, dies in einem Befehl zu tun, ohne die Datei dafür zu zerstören?

Author: slhck, 2010-01-01

17 answers

In bash, nur

> filename

Tun Wird. Dadurch erhalten Sie eine leere Datei filename.

PS: Wenn Sie brauchen, sudo anrufen, bitte berücksichtigen Sie verwenden truncate als , antwortete Sie hier.

 561
Author: geek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-03-23 19:39:40

Sie können den Benutzerbefehl verwenden: truncate

truncate -s 0 test.txt

("- s 0", um die Größe anzugeben)

Http://www.commandlinefu.com/commands/view/12/empty-a-file

 156
Author: nono,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-08-20 14:21:43

Sie könnten dies tun:

echo -n "" > file.log

Verwenden Sie >, um die (Null -) Eingabe von echo -n in die Datei zu schreiben.

Mit >> würde die Nulleingabe an die Datei anhängen(effektiv nichts anderes tun als touch).

 38
Author: Thechickenmoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-07-25 07:15:00
: > file.log

Wie > filename in Bash, funktioniert aber in mehr Schalen (Kredit). Leitet die Ausgabe vom eingebauten true (das keine Ausgabe hat) zu filename um.

 34
Author: Stuart P. Bentley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-07-25 22:51:07

ZSH -

>! filename

ZSH schützt Benutzer mit dem io redirect Operator > vor Clobbering-Dateien. Wenn Sie >! verwenden, können Sie das Abschneiden einer vorhandenen Datei erzwingen.

Wenn Sie möchten, dass ZSH das Umleitungsverhalten von Bash verwendet, wenn es keinen Schutz vor Dateiclobbering gibt, müssen Sie die Option clobber für Ihre Shell festlegen.

Weitere Informationen: http://zsh.sourceforge.net/Doc/Release/Redirection.html

 12
Author: Brian Wigginton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-12-06 20:48:34

WENN Sie dies in einem vim-Editor in der Befehlszeile tun möchten, können Sie Folgendes versuchen:

vim file.txt 

Drücken Sie Esc - .

:1,$d

Drücken Sie Enter.

Alle Zeilen werden gelöscht.

 10
Author: soum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-09-13 13:01:24
$ rm file.log; touch file.log

Oder

$ cat > file.log

Gefolgt von control-d.

, Oder...oder...oder...

Ah. Hier ist eine einzelne Befehlsversion:

$ dd if=/dev/null of=file.log
 5
Author: dmckee --- ex-moderator kitten,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-01-01 01:59:43

Der folgende Befehl sollte auch funktionieren:

cat /dev/null > file.log
 5
Author: paarth batra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-05-10 12:45:57

Wenn Sie sudo auf Superuser-Berechtigung benötigen, um auf die Datei zuzugreifen, funktioniert die akzeptierte Antwort nicht. Dies funktioniert:

truncate -s0 file

Oder explizit mit sudo:

sudo truncate -s0 file

Mehr Infos hier http://www.commandlinefu.com/commands/view/12/empty-a-file

 2
Author: timeSmith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-04-15 13:03:45

Wenige Alternativen:

ex +%d -scwq file.log
cp /dev/null file.log
vi +%d -escwq file.log
install -m600 /dev/null file.log
 1
Author: kenorb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-10-25 22:27:56

Wenn Sie Leerzeichen in Dateinamen haben, verwenden Sie:

for file in /path/to/file/*; do > "$file"; done

(Ich konnte es nicht in Kommentare zur vorherigen Antwort aufnehmen, weil ich keinen guten Ruf habe. Manchmal sind Einschränkungen kontraproduktiv.)

 1
Author: d491049,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-03-15 09:36:54

Dies kann mit sed

sed -i d filename

 1
Author: apena,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-05-26 17:14:17

Es gibt mehrere Möglichkeiten, die Datei zu löschen, wie unten aufgeführt:

echo "" > filename
cat /dev/null > filename

Die folgenden Beispiele werden hauptsächlich in Shell-Skripten verwendet

just# > filename
: > filename
 1
Author: sudhams reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-05-26 17:32:44

Eine Zeile nach der anderen?

Versuchen Sie vi(m), der schöne text-editor, der kann nichts tun. Navigieren Sie in diesem Fall zu einer Zeile, drücken Sie d (zum Löschen) und erneut d (für Zeile).

 0
Author: Phoshi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-01-01 03:14:40

Mit meinen Berechtigungen ist dies das einzige, was funktioniert hat:

touch temp.txt
sudo mv temp.txt original-file.txt
 0
Author: Morgan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-03-04 00:10:08

Wenn Sie mehrere Dateien haben, können Sie Folgendes verwenden:

for file in /path/to/file/*; do > $file; done

Dies ist hilfreich für Protokolldateien im selben Verzeichnis.

 0
Author: DomainsFeatured,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-06-22 16:35:06

In der windows-Umgebung:

type nul >filename
 0
Author: Wasif Hasan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-09-17 08:02:33