ファイルに複数行を追加する方法

ファイルに複数行を追加する方法

ファイルが存在しない場合は、ファイルを見つけてファイルを作成して追加するbashスクリプトを作成しています。

Host localhost
    ForwardAgent yes

それで"line then new line 'tab' then text"敏感なフォーマットだと思います。私はあなたがこれを行うことができることを知っています:

cat temp.txt >> data.txt

でも、2行あるので変に見えます。この形式で追加する方法はありますか?

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

関連情報