如何将文本追加到文件?
在Linux中向文件添加文本最简单的方法是什么?
我看了这个问题 ,但接受的答案使用了一个额外的程序( sed )我相信应该有一个更简单的方法与echo或类似的。 
 cat >> filename This is text, perhaps pasted in from some other source. Or else entered at the keyboard, doesn't matter. ^D 
实质上,您可以将所需的任何文本转储到文件中。 CTRL-D发送一个文件结束信号,它终止input并返回到shell。
怎么样:
 echo "hello" >> <filename> 
 使用>>操作符将在文件末尾添加数据,如果已经存在,使用>会覆盖文件的内容。 
 你也可以用相同的方式使用printf : 
 printf "hello" >> <filename> 
 请注意,使用上述可能是危险的。 例如,如果您已经有一个文件,并且需要将数据附加到文件的末尾,并且忘记添加最后一个>文件中的所有数据都将被销毁。 您可以通过在.bashrc设置noclobbervariables来更改此行为: 
 set -o noclobber 
 现在当你尝试echo "hello" > file.txt你会得到一个警告,说cannot overwrite existing file 。 
要强制写入文件,现在必须使用特殊的语法:
 echo "hello" >| <filename> 
 您还应该知道,默认情况下, echo会添加一个尾随的换行符,可以使用-n标志来禁止: 
 echo -n "hello" >> <filename> 
参考
-  echo(1) - Linux man page
-  noclobber variable
-  I/O Redirection
其他可能的方法是:
 echo "text" | tee -a filename 
-a将在文件末尾追加。
跟进接受的答案。
如果在脚本中使用此命令,则需要CTRL-D以外的内容来指定结尾 。 试试这个:
 cat << EOF >> filename This is text entered via the keyboard or via a script. EOF 
这会将文本追加到规定的文件(不包括“EOF”)。
它利用这里的文件(或heredoc) 。
但是,如果您需要使用sudo来附加到所指定的文件,那么如果您直接在命令行上键入,则由于I / Oredirect而使用heredoc将会遇到麻烦。
当您直接在命令行上键入时,这种变化将起作用:
 sudo sh -c 'cat << EOF >> filename This is text entered via the keyboard. EOF' 
 或者,您可以使用tee来避免在使用heredoc和cat时看到的命令行sudo问题: 
 tee -a filename << EOF This is text entered via the keyboard or via a script. EOF