
Bashスクリプトを作成するとき、またはLinuxコマンドラインで作業するときの最も一般的なタスクの1つは、ファイルの読み取りと書き込みです。
この記事では、リダイレクト演算子と tee
を使用して、Bashでファイルにテキストを書き込む方法について説明します。 コマンド。
リダイレクト演算子を使用したファイルへの書き込み#
Bashでは、出力のリダイレクトにより、コマンドからの出力をキャプチャしてファイルに書き込むことができます。
出力をファイルにリダイレクトおよび書き込むための一般的な形式は次のとおりです。
output > filename
output >> filename
-
>
リダイレクト演算子は、出力を特定のファイルに書き込みます。ファイルが存在する場合は、長さがゼロに切り捨てられます。それ以外の場合は、ファイルが作成されます。重要なファイルを上書きする可能性があるため、この演算子を使用する場合は特に注意してください。 >>コード> リダイレクト演算子は、出力を指定されたファイルに追加します。ファイルが存在しない場合は作成されます。
ファイルへの書き込み権限が必要です。そうしないと、許可拒否エラーが発生します。
これは、 echo
の出力をリダイレクトする方法を示す簡単な例です。 ファイルへのコマンド:
echo "this is a line" > file.txt
既存のファイルの上書きを防ぐには、 set
で「noclobber」オプションを有効にします 組み込み:
set -o noclobber
echo "this is a line" > file.txt
bash: file.txt: cannot overwrite existing file
>|コード> 演算子を使用すると、Bashの「noclobber」オプションをオーバーライドできます。
set -o noclobber
echo "this is a line" >| file.txt
>>コード> オペレーターは、ファイルを上書きするのではなく、ファイルの最後に出力を追加します。
echo "this is a line" >> file.txt
printf
を使用します 複雑な出力を作成するコマンド:
printf "Hello, I'm %s.\n" $USER > file.txt
ファイルに複数行を書き込む場合は、ヒアドキュメント(Heredoc)リダイレクトを使用します。
たとえば、コンテンツを cat
に渡すことができます コマンドを実行してファイルに書き込みます:
cat << EOF > file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF
行を追加するには、>
を変更します >>
を使用 ファイル名の前:
cat << EOF >> file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF
任意のコマンドの出力をファイルに書き込むことができます:
date +"Year: %Y, Month: %m, Day: %d" > file.txt
date
の出力 コマンドがファイルに書き込まれます。
tee
を使用してファイルに書き込む コマンド#
tee
コマンドは標準入力から読み取り、標準出力と1つ以上のファイルの両方に同時に書き込みます。
echo "this is a line" | tee file.txt
tee
コマンドのデフォルトの動作は、>
と同じように、指定されたファイルを上書きすることです。 オペレーター。出力をファイルに追加するには、 -a
を指定してコマンドを呼び出します。 (-追加
)オプション:
echo "this is a line" | tee -a file.txt
tee
が必要ない場合 標準出力に書き込むには、 / dev / null
にリダイレクトできます。 :
echo "this is a line" | tee file.txt >/dev/null
テキストを複数のファイルに書き込むには、ファイルを tee
の引数として指定します コマンド:
echo "this is a line" | tee file_1.txt file_2.txt file_3.txt
tee
のもう1つの利点 コマンドは、 sudo
と組み合わせて使用できることです。 他のユーザーが所有するファイルに書き込みます。書き込み権限がないファイルにテキストを追加するには、 sudo
を先頭に追加します tee
の前 :
echo "this is a line" | sudo tee file.txt
echo
コマンド出力は、入力として tee
に渡されます 、sudo権限を昇格させ、テキストをファイルに書き込みます。
結論#
Linuxでは、ファイルにテキストを書き込むには、>
を使用します および>>
リダイレクト演算子またはtee
コマンド。