我正在编写一个 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