Bash Shell - ファイルの生成と文字列の追加

Bashシェルスクリプトでファイルを作成し、文字列を追加する方法を紹介します。

次のような場合には、Bashでどのように実装すべきかを知ってみましょう。

  • 空のファイル生
  • ファイルの作成と文字列の追加
  • 存在するファイルの最後に文字列の追加

1. 空のファイルの生成

touchコマンドは、空のファイルを作成します。

次のコードを実行すると、空のファイルが生成されることを確認することができます。

#!/bin/bash

touch sample.txt

Output:

$ bash example.sh
$ ls sample.txt
sample.txt
$ cat sample.txt

2. echoでファイルを作成して文字列を追加する

echoは、端末に文字列を出力するときに使用します。

echoに >演算子を使用して、文字列をファイルに出力することができます。ファイルが存在する場合、 >演算子は、ファイルの内容をすべて削除して、渡された文字列のみを保存するようにします。

#!/bin/bash

echo "Hello, World" > sample.txt

次のようにスクリプトを二度実行して catにファイルの内容を出力してみるとHello, Worldのみファイルに保存されたことを確認することができます。

$ bash example.sh
$ bash example.sh
$ cat sample.txt
Hello, World

2.1 >>演算子でファイルの最後に文字列を追加する

echoで >>演算子を使用すれば、既存のファイルの内容は、削除せず、ファイルの末尾に文字列を追加します。つまり、既存のファイルの内容は削除されず、文字列のみを追加します。

#!/bin/bash

echo "Hello, World" >> sample.txt

次のように、スクリプトを3回実行して catにファイルの内容を出力してみるとHello, Worldが3回出力された。 >>は、既存のファイルの末尾に文字列を追加するためです。

$ bash example.sh
$ bash example.sh
$ bash example.sh
$ cat sample.txt
Hello, World
Hello, World
Hello, World

3. teeコマンドでファイルに文字列を追加する

teeコマンドは、ファイルに文字列を格納し、ターミナルに出力します。

#!/bin/bash

echo "Hello, World" | tee sample.txt

スクリプトを実行してみるとechoによって端末に文字列が出力され、ファイルにも保存されていることを確認することができます。

$ bash example.sh
Hello, World
$ cat sample.txt
Hello, World

3.1 teeコマンドで既存のファイルに文字列を追加する

もし既存のファイルは削除しないで、ファイルの末尾に文字列だけを追加するには、次のように -aオプションを使用します。

#!/bin/bash

echo "Hello, World" | tee -a sample.txt

Output:

$ bash example.sh
Hello, World
$ bash example.sh
Hello, World
$ cat sample.txt
Hello, World
Hello, World

3.1 teeを使用したときに結果を出力しない

teeに文字列を追加するときに、ターミナルに出力されないようにするには、 > /dev/nullのように出力を標準出力(STDOUT)ではない/dev/nullに送信することができます。

#!/bin/bash

echo "Hello, World" | tee sample.txt > '/dev/null'

Output:

$ bash example.sh
$ cat sample.txt
Hello, World
codechachaCopyright ©2019 codechacha