如何将多行追加到文件中

如何将多行追加到文件中

我正在编写一个 bash 脚本来查找文件(如果不存在),然后创建它并将其附加到其中:

Host localhost
    ForwardAgent yes

所以"line then new line 'tab' then text"我认为这是一种敏感格式。我知道你可以这样做:

cat temp.txt >> data.txt

但这看起来很奇怪,因为它有两条线。有没有办法以这种格式附加它:

echo "hello" >> greetings.txt

答案1

# 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

# possibility 4 (more about input than output):
arr=( 'line 1' 'line 2' );
printf '%s\n' "${arr[@]}" >> greetings.txt

如果需要 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

答案2

echo -e "Hello \nWorld \n" >> greetings.txt

答案3

另一种方法是使用tee

tee -a ~/.ssh/config << END
Host localhost
  ForwardAgent yes
END

tee手册页中的一些选择行:

tee 实用程序将标准输入复制到标准输出,从而在零个或多个文件中进行复制。

-a - 将输出附加到文件而不是覆盖它们。

答案4

以下是在文件中追加多行的示例:

{
        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

相关内容