Answers:
# possibility 1:
echo "line 1" >> greetings.txt
echo "line 2" >> greetings.txt
# possibility 2:
echo "line 1
line 2" >> greetings.txt
# possibility 3:
cat <<EOT >> greetings.txt
line 1
line 2
EOT
如果需要sudo(其他用户特权)来写入文件,请使用以下命令:
# possibility 1:
echo "line 1" | sudo tee -a greetings.txt > /dev/null
# possibility 3:
sudo tee -a greetings.txt > /dev/null <<EOT
line 1
line 2
EOT
( echo "line 1" ; echo "line 2" ) >>greetings.txt
。
{ echo "line 1" ; echo "line 2"; } >>greetings.txt
cat <<EOT
的EOT
只是一个随机字符串。也可能是cat <<FOO
。
另一种方法是使用 tee
tee -a ~/.ssh/config << END
Host localhost
ForwardAgent yes
END
tee
的手册页中的一些选择行:
tee实用程序将标准输入复制到标准输出,从而以零个或多个文件进行复制。
-a-将输出追加到文件,而不是覆盖它们。
SED可以像这样在文件末尾添加一行:
sed -i '$ a text to be inserted' fileName.file
$
选择文件末尾,a
告诉它要附加,然后是要插入的文本。然后当然是文件名。
来源:http :
//www.yourownlinux.com/2015/04/sed-command-in-linux-append-and-insert-lines-to-file.html
========== EDIT == ==========
这种方法是否比其他解决方案有更多好处?
是的,这种方法的另一个好处是可以将任何附加到搜索中的文件追加到该文件中,例如:
find . -name "*.html" -exec sed -i '$ a </html>' {} \;
我使用上面的示例插入了许多目录中每个html页面上缺少的结尾html标记。
==================================
sed
。BSD sed
因错误而失败command a expects \ followed by text
。因此,请勿将其用于脚本解决方案;容易断裂。(或者做正确的所需的BSD语法是POSIX兼容和GNU将工作sed
为好。
find
按如下方式使用:find . -name "*.txt" -exec sh -c 'printf "%s\n\t%s\n" "Host localhost" "ForwardAgent yes" >> "$1"' sh {} ";"
。
>
,>>
),因此不会遭受诸如运行之类的问题sudo echo 'something' > /file
。对我来说,它完全可以在lxd容器中的文件上添加一行,如下所示:lxc exec c sed -- '$ a newline' /myfile
。
echo "a new line" >> foo.file
不会创建一个新线的时候,文件没有结束新的生产线,但sed -i '$ a a new line' foo.file
会做,这样sed
比较好尤其是你想始终追加一个新行添加到文件。
可以cat >> out.txt
使用Perl或Python进行仿真以达到相同的效果。Perl:
perl -e 'open(fh,">>","./out.txt");while(<>){printf(fh "%s",$_)};close(fh);'
和Python:
python -c 'import sys;f=open(sys.argv[1],"a");l=[i for i in sys.stdin];f.write("".join(l))' out.txt
请注意,对于python,您必须按两次Ctrl+ D。有关更多信息,请参见有关stackoverflow的相关问题。
这是在文件中追加多行的示例:
{
echo ' directory "/var/cache/bind";'
echo ' listen-on { 127.0.0.1; };'
echo ' listen-on-v6 { none; };'
echo ' version "";'
echo ' auth-nxdomain no;'
echo ' forward only;'
echo ' forwarders { 8.8.8.8; 8.8.4.4; };'
echo ' dnssec-enable no;'
echo ' dnssec-validation no;'
} >> your_file.txt