[英]How do I append text to a file?
怎么样:
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.