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?
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.
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)
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
).
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.
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
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.
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
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
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
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
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.)
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
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
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).
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
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.
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
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