Bash でファイルに書き込む

Faaiq Bilal 2023年6月20日
Bash でファイルに書き込む

このチュートリアルでは、bash でファイルを書き込むためのさまざまなアプローチを探ることができます。 要件に基づいて、ファイルを追加または上書きできます。 どうすればできるか見てみましょう。

Bash でファイルを書き込み/上書きするさまざまな方法

出力を上書きしてファイルに追加するために、>>> などの複数の演算子が表示されます。 さらに、tee コマンドを使用して、単一および複数のファイルを上書きおよび追加します。

> 演算子を使用してファイルを上書きする

> 演算子は、ファイルを上書きするために使用されます。 たとえば、次のコードはファイルを上書きするために使用されます。

echo "Overwriting in the file" > test.txt

上記のコマンドは、test.txt ファイルが存在しない場合は上書きします。 それ以外の場合は、新しいものを作成します。 echo は、テキストの書式設定をサポートしていないため、通常は使用されません。

echo の代わりに、整形済みテキストには printf を使用します。 次の例は、printf を使用したファイルの上書きを示しています。

printf "overwriting using the printf \n now in next line" > test.txt

上記のコマンドは、文字列をフォーマットし、printf の後に新しい行を追加します。

>> 演算子を使用してファイルに書き込む

>> 演算子は、ファイルの末尾にコンテンツを追加するために使用されます。 たとえば、次のコマンドを使用して、test.txt という名前のファイルにデータを追加します。

echo "Append in the file" >> test.txt

vim コマンドを使用してファイルに書き込む

vim エディターは、ファイルの内容を編集するためにも使用されます。 たとえば、次のコードは、vim エディターで test.sh ファイルを開きます。

sudo vim test.sh

vim エディターを開いた後、次のスクリプトを追加して、ファイルの書き込み操作を実行します。

#! /bin/bash
echo "Enter Student Name"
read yourName
echo $yourName > test.txt
echo "Enter age"
read age
echo $age >> test.txt
cat test.txt

コードを追加したら、ESC を押して w と入力してファイルを閉じます。 bash test.sh を使用してファイルを実行します。

上記のスクリプトは、ファイル書き込みの 2つの方法を示しています。 4 行目では、ファイルを上書きする > 演算子を使用しました。 7 行目では、>> 演算子を使用します。これは、前の内容を上書きせず、文字列を新しい行に追加します。

tee コマンドを使用してファイルに書き込む

ファイルとコンソールへの書き込み操作を同時に実行したい場合は、tee コマンドを使用できます。 同時に入力を受け取り、文字列をファイルとコンソールに書き込みます。

tee コマンドを使用すると、ファイルに書き込まれている内容をコンソールで確認できます。 tee コマンドは、ファイルの上書きと追加にも使用されます。

tee コマンドを使用してファイルを上書きする

次のコマンドは、tee コマンドを使用して上書きするために使用されます。

echo "Testing the Tee Command" | tee test.txt

上記のコマンドは、パイプ (|) から文字列入力を取得し、コンソールとファイルに同時に書き込みます。

tee コマンドを使用してファイルに追加する

-a フラグは tee コマンドでファイルを追加するために使用されます。 たとえば、次のコードは Testing the Tee Commandtest.txt ファイルに追加します。

echo "Testing the Tee Command" | tee -a test.txt

コンテンツを複数のファイルに同時に書き込む必要がある場合があります。 tee コマンドを使用して、すべてのファイルの名前を単一のスペースで区切って指定することで、これを実現できます。

次の bash コマンドは、コンテンツを複数のファイルに書き込む方法を示しています。

echo "Writing text to the multiple files" | tee test1.txt test2.txt test3.txt

上記のコマンドは、入力文字列をコンソールに書き込み、3つのテキスト ファイルを同時に書き込みます。

関連記事 - Bash File