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.

611voto

Nylon Smile Punkte 8182

En >> Umleitungsoperator werden Zeilen an das Ende der angegebenen Datei angehängt, während der einzelne Größer-als > wird die Datei geleert und überschrieben.

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

155voto

BrDaHa Punkte 4437

In der Bash, wenn Sie noclobber a la set -o noclobber , dann verwenden Sie die Syntax >|

Zum Beispiel:

echo "some text" >| existing_file

Dies funktioniert auch, wenn die Datei noch nicht existiert


  • Prüfen Sie, ob noclobber mit gesetzt ist: set -o | grep noclobber

  • Eine ausführlichere Erläuterung dieses speziellen Operatortyps finden Sie unter diese Stelle

  • Eine ausführliche Liste der Umleitungsoperatoren finden Sie unter diese Stelle

40voto

Alex Gray Punkte 15268

Trotz NylonSmile Antwort was "irgendwie" richtig ist. Ich war nicht in der Lage überschreiben. Dateien, auf diese Weise..

echo "i know about Pipes, girlfriend" > thatAnswer

zsh: file exists: thatAnswer

um meine Probleme zu lösen... Ich hatte zu verwenden... >! , á la ..

[[ $FORCE_IT == 'YES' ]] && echo "$@" >! "$X" || echo "$@" > "$X"

Seien Sie natürlich vorsichtig damit...

23voto

computerist Punkte 782

Wenn Ihre Umgebung das Überschreiben mit > Rohr verwenden | y tee stattdessen wie folgt:

echo "text" | tee 'Users/Name/Desktop/TheAccount.txt'

Beachten Sie, dass dies auch auf stdout ausgegeben wird. Falls dies unerwünscht ist, können Sie die Ausgabe umleiten nach /dev/null wie folgt:

echo "text" | tee 'Users/Name/Desktop/TheAccount.txt' > /dev/null

6voto

#!/bin/bash

cat <<EOF > SampleFile

Put Some text here 
Put some text here
Put some text here

EOF

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