Bash を使ってファイルにテキストを追加する方法
テキストをファイルに追加するには、リダイレクト(>>
)演算子と tee
コマンドを使用します。
ファイルにテキストを追加するのに十分な権限があることを確認しなければなりません。十分なパーミッションがない場合、パーミッション拒否エラーが発生する可能性があります。
リダイレクション演算子 >>
を使ってファイルにテキストを追加する
リダイレクション演算子 >>
は bash
コマンドから出力を取得し、その出力を別のファイルに追加します。標準出力にテキストを出力する方法はたくさんあるが、echo
と printf
が最も一般的なコマンドです。
テキストをファイルに追加するには、出力コマンドのいずれかを使ってテキストを出力するコマンドを書き、>>
演算子の後にテキストを追加するファイル名を付けます。
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.txt
に The 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.txt
と backup.txt
の両方のファイルに同時にテキストを追加することができます。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn