HTMLをテキストファイルとしてエコー

HTMLをテキストファイルとしてエコー

一部のHTMLコードをテキスト/ HTMLファイルに反映する簡単な方法はありますか?

私はしようとしています:

echo "<!DOCTYPE html>\n<html>\n\t<body>\n\t\t<h1>Hello World!</h1>\n\t</body>\n</html>" > index.html

しかし、以下を得る:

-bash: !DOCTYPE: event not found

答え1

!bashは一重引用符を特殊文字として解釈するので、一重引用符を使用してください。

また、バックスラッシュエスケープが解釈されるように-ewithを使用してください。echo\n

echo -e '<html>\n<html>\n\t<body>\n\t\t<h1>Hello World!</h1>\n\t</body>\n</html>' > index.html

答え2

二重引用符の代わりに一重引用符を使用すると、この問題を解決できます。したがって、期待どおりに動作する必要があります。

echo '<!DOCTYPE html>\n<html>\n\t<body>\n\t\t<h1>Hello World!</h1>\n\t</body>\n</html>' > index.html

一重引用符を使用すると、bashは特殊文字を解釈せず、リテラル文字列のみを保持します。

答え3

bashトリガー履歴拡張を使用しています!。履歴拡張 off を使用するか、set +H単一引用符で囲まれた文字列を使用するか、ここでドキュメントを使用して HTML を作成します。

$ cat <<'END_HTML' >index.html
<!DOCTYPE html>
<html>
        <body>
                <h1>Hello World!</h1>
        </body>
</html>
END_HTML

または、エンコードされたタブと改行をそのまま作成するには、次の手順を実行します。

$ cat <<'END_HTML' >index.html
<!DOCTYPE html>\n<html>\n\t<body>\n\t\t<h1>Hello World!</h1>\n\t</body>\n</html>
END_HTML

この文書では履歴拡張は実行されませんbash

関連情報