Write to file, but overwrite it if it exists
The >>
redirection operator will append lines to the end of the specified file, where-as the single greater than >
will empty and overwrite the file.
echo "text" > 'Users/Name/Desktop/TheAccount.txt'
In Bash, if you have set noclobber a la set -o noclobber
, then you use the syntax >|
For example:
echo "some text" >| existing_file
This also works if the file doesn't exist yet
-
Check if noclobber is set with:
set -o | grep noclobber
-
For a more detailed explanation on this special type of operator, see this post
-
For a more exhaustive list of redirection operators, refer to this post
Despite NylonSmile
's answer, which is "sort of" correct.. I was unable to overwrite files, in this manner..
echo "i know about Pipes, girlfriend" > thatAnswer
zsh: file exists: thatAnswer
to solve my issues.. I had to use... >!
, á la..
[[ $FORCE_IT == 'YES' ]] && echo "$@" >! "$X" || echo "$@" > "$X"
Obviously, be careful with this...
If your environment doesn't allow overwriting with >
, use pipe |
and tee
instead as follows:
echo "text" | tee 'Users/Name/Desktop/TheAccount.txt'
Note this will also print to the stdout. In case this is unwanted, you can redirect the output to /dev/null
as follows:
echo "text" | tee 'Users/Name/Desktop/TheAccount.txt' > /dev/null