Bash を使ってファイルにテキストを追加する方法

Suraj Joshi 2023年1月30日
  1. リダイレクション演算子 >> を使ってファイルにテキストを追加する
  2. テキストをファイルに追加する tee コマンド
Bash を使ってファイルにテキストを追加する方法

テキストをファイルに追加するには、リダイレクト(>>)演算子と tee コマンドを使用します。

ファイルにテキストを追加するのに十分な権限があることを確認しなければなりません。十分なパーミッションがない場合、パーミッション拒否エラーが発生する可能性があります。

リダイレクション演算子 >> を使ってファイルにテキストを追加する

リダイレクション演算子 >>bash コマンドから出力を取得し、その出力を別のファイルに追加します。標準出力にテキストを出力する方法はたくさんあるが、echoprintf が最も一般的なコマンドです。

テキストをファイルに追加するには、出力コマンドのいずれかを使ってテキストを出力するコマンドを書き、>> 演算子の後にテキストを追加するファイル名を付けます。

echo "Hello World" >> abc.txt

これにより、ファイル abc.txt の最後に Hello World というテキストが追加されます。

現在の作業ディレクトリにファイルが存在しない場合、このコマンドは空のファイルを作成し、そのファイルに Hello World というテキストを書き込みます。

エスケープシーケンス文字の Hello World を解釈するには、echo コマンドで -e オプションを使用します。

echo -e "Hello World! \nThis is DelftStack" >> abc.txt

これにより、テキスト

Hello World!
This is DelftStack

をファイル abc.txt に追加します。

テキストが追加されたかどうかを確認するには、cat コマンドを使ってファイルの内容を見ることができます。

cat abc.txt

出力:

Hello World! 
This is DelftStack

テキストが追加されていれば、ファイルの最後にテキストが表示されます。

より整形されたテキストが必要な場合は、printf コマンドを使ってより整形された出力を生成することができます。

printf "The path of shell interpreter is %s\n" $SHELL >> abc.txt

これはファイル abc.txtThe path of shell interpreter is /bin/bash というテキストを追加します。

テキストをファイルに追加する tee コマンド

tee は標準入力から入力を受け取り、それを 1つ以上のファイルと標準出力に同時に書き込むコマンドラインユーティリティです。

デフォルトでは、tee コマンドはファイルの内容を上書きします。ファイルの最後にテキストを追加するだけなら、コマンドの -a または --append オプションを使用します。

echo "Hello World!" | tee -a abc.txt

出力:

Hello World!

Hello World!をファイル abc.txt に追加し、テキストをターミナルの標準出力に書き込みます。

テキストをファイルに追加する際にパーミッションが拒否された場合は、tee コマンドの前に sudo キーワードを追加すればよい。

echo "Hello World!" | sudo tee -a abc.txt

標準出力を見たくない場合は、/dev/null にリダイレクトすればよい。

 echo "Hello World!"  | tee -a abc.txt >/dev/null

tee コマンドを使用する利点の一つは、tee コマンドを使って複数のファイルに同時にテキストを書き込むことができることです。複数のファイルにテキストを書き込むには、スペースで区切ったファイルをリストアップすればよい。

echo "Hello World!" | sudo tee -a abc.txt backup.txt

これにより、abc.txtbackup.txt の両方のファイルに同時にテキストを追加することができます。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn