繁体   English   中英

如何将文本附加到文件?

[英]How do I append text to a file?

在Linux中将文本追加到文件的最简单方法是什么?

我看了一下这个问题 ,但接受的答案使用了一个额外的程序( sed )我确信应该有一个更简单的echo或类似方法。

怎么样:

echo "hello" >> <filename>

使用>>运算符将在文件末尾附加数据,而使用>将覆盖文件的内容(如果已存在)。

您也可以以相同的方式使用printf

printf "hello" >> <filename>

请注意,使用上述内容可能会有危险。 例如,如果您已经有一个文件,并且需要将数据附加到文件末尾而忘记添加最后一个>文件中的所有数据都将被销毁。 您可以通过在.bashrc设置noclobber变量来更改此行为:

set -o noclobber

现在,当您尝试echo "hello" > file.txt您将收到一条警告,指出cannot overwrite existing file

要强制写入文件,您现在必须使用特殊语法:

echo "hello" >| <filename>

您还应该知道,默认情况下, echo会添加一个尾随的换行符,可以使用-n标志来抑制它:

echo -n "hello" >> <filename>

参考

cat >> filename
This is text, perhaps pasted in from some other source.
Or else entered at the keyboard, doesn't matter. 
^D

基本上,您可以将所需的任何文本转储到文件中。 CTRL-D发送一个文件结束信号,终止输入并返回shell。

其他可能的方法是:

echo "text" | tee -a filename >/dev/null

-a将附加在文件的末尾。

如果需要sudo ,请使用:

echo "text" | sudo tee -a filename >/dev/null

跟进接受的答案。

如果在脚本中使用此项,则需要除CTRL-D之外的其他内容来指定结尾 试试这个:

cat << EOF >> filename
This is text entered via the keyboard or via a script.
EOF

这会将文本附加到所述文件(不包括“EOF”)。

它利用了这里的文件(或heredoc)

但是,如果您需要sudo附加到指定的文件,如果您直接在命令行上键入,则由于I / O重定向而使用heredoc会遇到麻烦。

直接在命令行上键入时,此变体将起作用:

sudo sh -c 'cat << EOF >> filename
This is text entered via the keyboard.
EOF'

或者您可以使用tee来避免在使用带有cat的heredoc时看到的命令行sudo问题:

tee -a filename << EOF
This is text entered via the keyboard or via a script.
EOF

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM