一部の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は一重引用符を特殊文字として解釈するので、一重引用符を使用してください。
また、バックスラッシュエスケープが解釈されるように-e
withを使用してください。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
。