echo "text" >> 'Users/Name/Desktop/TheAccount.txt'
Wie mache ich es so, dass es die Datei erstellt, wenn sie nicht existiert, aber sie überschreibt, wenn sie bereits existiert. Im Moment wird dieses Skript nur angehängt.
Ein wenig Verständnis darüber, wie * nix Pipes funktionieren, würde helfen.
Kurz gesagt, der Umleitungsoperator >>
Fügt Zeilen an das Ende der angegebenen Datei an, wobei der Wert größer als >
Die Datei leer macht und überschreibt.
echo "text" > 'Users/Name/Desktop/TheAccount.txt'
Wenn Sie in Bash noclobber a la set -o noclobber
Eingestellt haben, verwenden Sie die Syntax >|
.
Zum Beispiel:
echo "some text" >| existing_file
Dies funktioniert auch, wenn die Datei noch nicht existiert
Trotz NylonSmile
's Antwort , was "irgendwie" richtig ist. Ich konnte keine Dateien überschreiben , auf diese Weise..
echo "i know about Pipes, girlfriend" > thatAnswer
zsh: file exists: thatAnswer
um meine Probleme zu lösen, musste ich ... >!
, á la ..
[[ $FORCE_IT == 'YES' ]] && echo "[email protected]" >! "$X" || echo "[email protected]" > "$X"
Seien Sie vorsichtig damit ...
Wenn Ihre Umgebung das Überschreiben mit >
Nicht zulässt, verwenden Sie stattdessen Pipe |
Und tee
wie folgt:
echo "text" | tee 'Users/Name/Desktop/TheAccount.txt'
Beachten Sie, dass dies auch auf die Standardausgabe gedruckt wird. Falls dies unerwünscht ist, können Sie die Ausgabe wie folgt nach /dev/null
Umleiten:
echo "text" | tee 'Users/Name/Desktop/TheAccount.txt' > /dev/null
#!/bin/bash
cat <<EOF > SampleFile
Put Some text here
Put some text here
Put some text here
EOF
Beachten Sie nur, dass Sie, wenn Sie sowohl std :: cerr als auch std :: cout in eine Datei umleiten möchten, während Sie noclobber eingestellt 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 .
Auch die @ TuBui-Frage dieser Antwort auf die @ BrDaHa-Antwort lieferte oben am 9. August 18 um 9:34 Uhr.