回答:
cat >> filename
This is text, perhaps pasted in from some other source.
Or else entered at the keyboard, doesn't matter.
^D
基本的に、必要なテキストをファイルにダンプできます。CTRL-Dは、ファイルの終わり信号を送信します。これにより、入力が終了し、シェルに戻ります。
sudo !!
これにより、最後のコマンドがsudo
先頭に追加されて実行されます。私は最近これがnano
(偶発的にnano nano auth
... しようとして)etc でも機能することを発見しました
!!
以前は使用していませんでした。だから私はしばしばのようなことをしcat /var/log/apache/error.log
、許可が拒否されます。これは、履歴のIDを使用してsudo !1419
実行することもできます。たとえば、履歴の行1419
でコマンドをsudoとして実行します。
どうですか:
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
に使用するように注意してください。>>
>
sudo rm -r /
=)
sudo rm -r /
よりもsudo rm -rf /
!^ _ ^既存のファイルの内容を上書きする前に確認を求めるフラグはあります>
か?常にそのようなフラグを使用するというエイリアスを付けるのは良い考えのようです。
set -o noclobber
、あなたの中で.bashrc
、あなたは特別な構文を使用せずに既存のファイルを上書きすることはできませんecho "hello" >| <filename>
他の可能な方法は:
echo "text" | tee -a filename >/dev/null
-a
ファイルの末尾に追加します。
必要な場合はsudo
、以下を使用します。
echo "text" | sudo tee -a filename >/dev/null
>/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
、代わりにを使用して、heredocをcatで使用するときに見られるコマンドラインのsudoの問題を回避できます。
tee -a filename << EOF
This is text entered via the keyboard or via a script.
EOF
cat << 'EOF' >
何年も使用しておりcat << 'EOF' >>
、追加することを知りませんでした!ありがとう