You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将BASH命令输出文本转换为格式与原输出一致的HTML报告

如何将BASH命令输出文本转换为格式与原输出一致的HTML报告

嗨,这个问题我之前也碰到过!HTML默认会把连续的空白字符(换行、空格、制表符)都合并成一个空格,所以你的systemctl status ddos.service输出才会在HTML里挤成一行。下面给你几个实用的解决办法,按需选择就行:


方法1:用HTML <pre> 标签保留原始格式

<pre> 标签专门用来展示预格式化的文本,会完整保留原内容的换行、缩进和空格。

脚本生成示例:

如果你是用脚本自动生成HTML报告,可以把命令输出包裹在<pre>标签里。注意要转义HTML特殊字符(比如<、>、&),避免破坏HTML结构:

# 提取命令输出并转义特殊字符
service_status=$(systemctl status ddos.service | sed -e 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&#39;/g')

# 生成带<pre>标签的HTML内容
cat > report.html <<EOF
<!DOCTYPE html>
<html>
<body>
<h1>DDOS Service Status Report</h1>
<pre>$service_status</pre>
</body>
</html>
EOF

这样生成的HTML里,命令输出会和bash里显示的格式完全一致。


方法2:用CSS white-space: pre-wrap 实现自适应格式

如果你希望文本能自动适应容器宽度(不会横向滚动),同时保留换行和缩进,可以给容器元素加上white-space: pre-wrap的CSS样式:

手动/脚本生成示例:

<!DOCTYPE html>
<html>
<body>
<h1>DDOS Service Status Report</h1>
<div style="white-space: pre-wrap; font-family: monospace;">
$(systemctl status ddos.service | sed -e 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g; s/"/\&quot;/g; s/'"'"'/\&#39;/g')
</div>
</body>
</html>

加上font-family: monospace还能让文本和bash里的等宽字体一致,观感更还原。


方法3:用aha工具一键转换(保留ANSI颜色)

如果你的bash输出带有颜色(比如systemctl的绿色运行状态、红色错误提示),可以用aha工具直接把带ANSI颜色的输出转换成带样式的HTML,格式和颜色都会完美还原。

使用步骤:

  1. 先安装aha(不同系统命令不同):
    • Debian/Ubuntu: sudo apt install aha
    • RHEL/CentOS: sudo dnf install aha
  2. 直接转换输出到HTML:
systemctl status ddos.service | aha > report.html

生成的HTML不仅格式和bash一致,连原输出的颜色都会保留,非常直观。


备注:内容来源于stack exchange,提问作者M. Fachrizal Utama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:33:02