次の内容をファイルに入力するにはどうすればいいですか?
Hi
abcd
を使用しようとしましたecho "Hi\nabcd" >> ab.txt
が、ファイルではそのまま記述されています(\n
改行ではなく が含まれています)
答え1
echo
エスケープシーケンスを尊重するように指示する必要があります。
echo -e "Hi\nabcd" >> ab.txt
答え2
答え3
使用することをお勧めしますbashシェルの機能と呼ばれるヒアドキュメントあなたが説明していることを実現するための最もエレガントな形式のようです。最も重要なのは、複数行のコンテンツが、出力ファイルとまったく同じように見えることです (判読不能な長い\n
区切られた文字列とは対照的です)。
cat > ab.txt <<EOL
Hi
abcd
EOL
ここEOL
は、シェルが検索するべきマーカーです。ここに文書偶然に矛盾しない単語を任意に選択することができます。ここに文書の内容自体です。${VARIABLES}
置換されるシェルがあるのは良いことです。それが何らかの理由で望ましくない場合は、開始マーカー ワード (開始マーカー ワードのみ) を引用符 ( '
) で囲んで、これを防止できます。
私は個人的に、環境を設定するときに小さな構成ファイルを作成するために、init スクリプトでこれをよく使用します。次のようなものです。
cat > ~/.screenrc <<END_OF_HEREDOC_MARKER
defscrollback ${MAX_LINES}
END_OF_HEREDOC_MARKER
答え4
引用符を使ってゲームをすることもできます:
% echo 'Hi
> abcd' >> ab.txt
bash でそれを入力するには、「Hi」の後に「Enter」を押します。私の場合、bash はコマンド プロンプトの継続として「>」を使用します。何らかの理由で、個々のリターンをバックスラッシュでエスケープできませんでした。