写入文件,但覆盖它,如果存在

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

我该怎么做才能创build文件,如果它不存在,但覆盖它,如果它已经存在。 现在这个脚本只是附加。

对nixpipe道工作有一点了解会有所帮助。

简而言之, >>redirect操作符将追加行到指定文件的末尾,其中 – 单个大于>将清空并覆盖文件。

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

在Bash中,如果你已经设置了set -o noclobber ,那么你使用语法>|

例如:

echo "some text" >| existing_file

如果文件还不存在,这也是有效的


  • 有关这种特殊types的操作符的更详细的解释,请参阅这篇文章

  • 有关redirect操作符的更详尽列表,请参阅此文章

尽pipeNylonSmile的答案 ,这是“sorting”正确..我无法用这种方式覆盖文件。

echo "i know about Pipes, girlfriend" > thatAnswer

zsh: file exists: thatAnswer

解决我的问题..我不得不使用… >! ála ..

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

很显然,小心这个…

 #!/bin/bash cat <<EOF > SampleFile Put Some text here Put some text here Put some text here EOF 

如果您的输出可能有错误,则可能需要使用和号大于,如下所示:

my_task &> 'Users/Name/Desktop/task_output.log'这会将stderr和stdoutredirect到日志文件(而不是stdout)。