Linux でファイルにテキストを追加する最も簡単な方法は何ですか?
私はこの質問を見ましたが、受け入れられた答えは追加のプログラムを使用しています( )または同様sed
のより簡単な方法があるはずです。echo
どうですか:
echo "hello" >> <filename>
演算子を使用する>>
と、ファイルの末尾にデータが追加されますが、 を使用する>
と、ファイルの内容が既に存在する場合は上書きされます。
printf
同じ方法で使用することもできます:
printf "hello" >> <filename>
上記を使用すると危険な場合があることに注意してください。たとえば、既にファイルがあり、ファイルの最後にデータを追加する必要があり、最後の追加を忘れた場合>
、ファイル内のすべてのデータが破棄されます。noclobber
で変数を設定することにより、この動作を変更できます.bashrc
。
set -o noclobber
これを実行しようとするecho "hello" > file.txt
と、 という警告が表示されますcannot overwrite existing file
。
ファイルへの書き込みを強制するには、特別な構文を使用する必要があります。
echo "hello" >| <filename>
デフォルトでは、フラグecho
を使用して抑制できる末尾の改行文字が追加されることも知っておく必要があります。-n
echo -n "hello" >> <filename>
参考文献
cat >> filename
This is text, perhaps pasted in from some other source.
Or else entered at the keyboard, doesn't matter.
^D
基本的に、必要なテキストをファイルにダンプできます。CTRL-D はファイル終了シグナルを送信します。これにより、入力が終了し、シェルに戻ります。
他の可能な方法は次のとおりです。
echo "text" | tee -a filename >/dev/null
はファイルの-a
最後に追加されます。
が必要な場合sudo
は、次を使用します。
echo "text" | sudo tee -a filename >/dev/null
受け入れられた回答をフォローアップします。
これをスクリプトで使用する場合は、CTRL-D以外で終了を指定する必要があります。代わりにこれを試してください:
cat << EOF >> filename
This is text entered via the keyboard or via a script.
EOF
これにより、指定されたファイルにテキストが追加されます (「EOF」は含まれません)。
ヒア ドキュメント (またはヒアドキュメント)を利用します。
ただし、指定されたファイルに追加するために sudo が必要な場合、コマンド ラインで直接入力すると、I/O リダイレクトが原因でヒアドキュメントを利用する際に問題が発生します。
このバリエーションは、コマンド ラインで直接入力している場合に機能します。
sudo sh -c 'cat << EOF >> filename
This is text entered via the keyboard.
EOF'
または、tee
代わりに使用して、cat でヒアドキュメントを使用するときに見られるコマンド ライン sudo の問題を回避できます。
tee -a filename << EOF
This is text entered via the keyboard or via a script.
EOF