389 Stimmen

In die Datei schreiben, aber überschreiben, wenn sie existiert

echo "text" >> 'Users/Name/Desktop/TheAccount.txt'

Wie kann ich es so einrichten, dass die Datei erstellt wird, wenn sie nicht existiert, aber überschrieben wird, wenn sie bereits existiert? Im Moment fügt das Skript nur an.

4voto

greensaxman Punkte 41

Wenn Sie sowohl stderr als auch stdout in eine Datei umleiten wollen, während Sie noclobber gesetzt haben (d.h. set -o noclobber ), können Sie den Code verwenden:

cmd >| file.txt 2>&1

Weitere Informationen hierzu finden Sie unter https://stackoverflow.com/a/876242 .

Dies ist auch die Antwort auf die Frage von @TuBui auf die Antwort von @BrDaHa über am 9 Aug '18 um 9:34.

1voto

Narendra Maru Punkte 767

Um den Inhalt einer Datei in einer anderen Datei zu überschreiben, verwenden Sie ein einzelnes Größer-als-Zeichen, bei Verwendung von zwei Zeichen wird angehängt.

echo  "this is foo" > foobar.txt
cat foobar.txt
    > this is foo

echo "this is bar" > foobar.txt
cat foobar.txt
    > this is bar

echo "this is foo, again" >> foobar.txt
cat foobar.txt
    > this is bar
    > this is foo, again

Wie bereits in anderen Antworten erwähnt, sollten Sie noclobber setzen, dann verwenden Sie die >| Betreiber.

-4voto

aaron-coding Punkte 2393

Wenn Sie eine Ausgabe haben, die Fehler enthalten kann, sollten Sie ein kaufmännisches Und verwenden und a größer als, wie folgt:

my_task &> 'Users/Name/Desktop/task_output.log' wird sowohl stderr als auch stdout in die Protokolldatei umgeleitet (statt nur stdout).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X