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