Ich habe eine Protokolldatei, die eine Menge Dinge enthält, die ich nicht mehr brauche. Ich möchte den Inhalt löschen.
Ich kann den Inhalt auf dem Bildschirm ausdrucken:
cat file.log
Ich kann die Datei Zeile für Zeile bearbeiten:
nano file.log
Ich möchte jedoch nicht jede Zeile einzeln löschen. Gibt es eine Möglichkeit, es in einem Befehl zu tun, ohne die Datei zu zerstören, um es zu tun?
linux
command-line
Andrew
quelle
quelle
bash
als Shell und nicht z. B.cmd.exe
oder PowerShell verwenden, von denen keines POSIXy genug ist, um solche Aufgaben zu bewältigen.Sie können den Befehl user verwenden: truncate
("-s 0" zur Angabe der Größe)
http://www.commandlinefu.com/commands/view/12/empty-a-file
quelle
sudo echo > file
in solchen Fällen wird nur ein Fehler ausgegeben.sudo bash -c '> filename'
So verwenden Sie die Bash-Lösungen mit sudo.brew install truncate
unter os x mit installiertem homebrew.Sie könnten dies tun:
Verwenden Sie
>
, um die (Null-) Eingabe vonecho -n
in die Datei zu schreiben .Mit Hilfe
>>
würde fügt die Null Eingabe in die Datei (effektiv nichts zu tun , sonderntouch
ing es).quelle
true
(oder seinen eingebauten Alias:
) zu verwenden, obwohl Sie letztendlich überhaupt keinen Befehl benötigen (siehe die akzeptierte Antwort).sudo
.Entspricht
> filename
Bash, funktioniert aber mit mehr Muscheln (Kredit) . Leitet die Ausgabe von dertrue
eingebauten (die keine Ausgabe hat) zufilename
.quelle
:> filename
. Sieht es nicht aus wie ein Smiley? :>ZSH
ZSH schützt Benutzer mit dem io-Redirect-Operator vor Datenverlust
>
. Wenn Sie verwenden>!
, können Sie das Abschneiden einer vorhandenen Datei erzwingen.Wenn Sie möchten, dass ZSH das Umleitungsverhalten von Bash verwendet, und kein Schutz vor Dateikollisionen besteht, müssen Sie die
clobber
Option für Ihre Shell festlegen .Weitere Informationen: http://zsh.sourceforge.net/Doc/Release/Redirection.html
quelle
WENN Sie dies in einem VIM-Editor in der Befehlszeile tun möchten, können Sie dies versuchen:
Drücken Sie Esc.
Drücken Sie Enter.
Sie finden alle Zeilen gelöscht.
quelle
maillog
, auchsudo > /var/log/maillog
wenn es nicht geklärt werden konnte (Erlaubnis verweigert)sudo > /var/log/maillog
Mittel - starte sudo und füge seine Ausgabe in die Datei ein. Offensichtlich wird die Ausgabe mit den aktuellen Benutzerberechtigungen erstellt. Einfacher ist essudo su
, die Root-Shell zu starten und dann zu tun> /var/log/maillog
.oder
gefolgt von
control-d
.oder ... oder ... oder ...
Ah. Hier ist eine einzelne Befehlsversion:
quelle
echo "" > file.log
ist besser als diecat
Option, die Sie in dieser Situation zeigen, obwohl es andere gibt, bei denen diescat
angemessener ist. Beide verwenden dieselbe Shell-Umleitung, um das schwere Heben durchzuführen.rm
erledigt yes die Aufgabe, eine leere Datei mit demselben Namen zu erstellen. Aber es wird nicht für jeden Anwendungsfall richtig sein.Der folgende Befehl sollte auch funktionieren:
quelle
Wenn Sie die Berechtigung sudo to superuser benötigen, um auf die Datei zuzugreifen, funktioniert die akzeptierte Antwort nicht. Dies funktioniert folgendermaßen:
oder explizit mit sudo:
Weitere Informationen finden Sie hier http://www.commandlinefu.com/commands/view/12/empty-a-file
quelle
Einige Alternativen:
quelle
Wenn Sie Leerzeichen in Dateinamen haben, verwenden Sie:
(Ich konnte es nicht in die Kommentare zur vorherigen Antwort aufnehmen, da ich keine Reputation von 50 habe. Manchmal sind Einschränkungen kontraproduktiv.)
quelle
Eine Zeile nach der anderen?
Versuchen Sie vi (m), den schönen Texteditor, der alles kann. Navigieren Sie in diesem Fall zu einer Zeile, drücken Sie d (zum Löschen) und d erneut (für die Zeile).
quelle
gg
bewegt sich nach oben, so dass die gesamte Sequenz sein könnteggdG
.Mit meinen Berechtigungen ist dies das einzige, was funktioniert hat:
quelle
Wenn Sie mehrere Dateien haben, können Sie auch Folgendes verwenden:
Dies ist hilfreich für Protokolldateien im selben Verzeichnis.
quelle
> a.txt
Entspricht> Dateiname in Bash, funktioniert jedoch in mehreren Shells (Guthaben). Leitet die Ausgabe von True Builtin (das keine Ausgabe hat) nach Dateiname um.
quelle