次の内容をファイルに入力するにはどうすればよいですか。
Hi
abcd
echo "Hi\nabcd" >> ab.txt
を使用してみましたが、ファイルにはそのまま書き込まれています(改行の代わりに\n
が含まれています)
エスケープシーケンスを尊重するには、echo
に通知する必要があります。
echo -e "Hi\nabcd" >> ab.txt
cat > file
と入力し、入力し終えたらCtrl-Dを押します。
引用付きのゲームをプレイすることもできます:
% echo 'Hi
> abcd' >> ab.txt
「Hi」の後に「Enter」を押すと、bashに入力できます。 Bashは、コマンドの継続プロンプトとして「>」を使用しています。どういうわけか、バックスラッシュで個々のリターンを逃れることができませんでした。
bash Shell機能(Here Document )を使用することをお勧めします。あなたが説明することを達成するための最もエレガントなフォームのようです。最も重要なのは、複数行のコンテンツが、出力ファイルにあるのとまったく同じように見えることです(判読不能、長い、\n
で区切られた文字列)。
cat > ab.txt <<EOL
Hi
abcd
EOL
ここのEOL
は、シェルがこちらのドキュメントの終わりを見つけるために何を探す必要があるかを示すマーカーです。 こちらのドキュメントの内容自体と偶然に競合しないものを選択できる単語を任意に選択できます。シェル${VARIABLES}
置換されます。それがどういうわけか望まないなら、あなたはいつでも引用符('
)それを防ぐために。
私は個人的にこれをinitスクリプトで頻繁に使用して、環境の設定時に次のような小さな構成ファイルを作成します。
cat > ~/.screenrc <<END_OF_HEREDOC_MARKER
defscrollback ${MAX_LINES}
END_OF_HEREDOC_MARKER
cp /dev/tty file
enterキーを押します。次に入力を開始します。好きなだけ入力を続けます。すべての入力を完了したら、tty EOF文字列を入力します。これは通常CTRL+D
で送信されます。今度はもう一度押すと、完了です。