<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>技术 · Domal</title>
    <link>https://domal.cc/tags/%E6%8A%80%E6%9C%AF/</link>
    <description>Domal</description>
    <generator>Hugo -- gohugo.io</generator>
    <atom:link href="https://domal.cc/tags/%E6%8A%80%E6%9C%AF/" rel="self" type="application/rss+xml" />
    
    <item>
      <title>浅说 Artalk</title>
      <link>https://domal.cc/posts/artalk%E9%83%A8%E7%BD%B2/</link>
      <pubDate>Thu, 03 Sep 2026 17:35:00 &#43;0800</pubDate>
      <author>豆沫</author>
      <guid>https://domal.cc/posts/artalk%E9%83%A8%E7%BD%B2/</guid>
      <description>&amp;lt;h1 id=&amp;#34;在docker上部署artalk时遇到的问题汇总&amp;#34;&amp;gt;在Docker上部署Artalk时遇到的问题汇总。&amp;lt;/h1&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;很多年前，折腾过Typecho比较老牌的博客系统，原生自带评论功能，但是存在PHP漏洞风险，需要定期备份，说到这儿想起我曾经写过的文章，都已经俨然不在了。但是Typecho还是有些比较显著的有点的，比如开箱即用，浏览器登录就能写文章，手机、网吧随时可以更新博客，不需要本地环境，而且生态也比较成熟，上手门槛很低。但是需要维护服务器安全，防SQL注入、后台暴力破解、定期备份，而且也不能直接拿md文件进行迁移，数据库一旦损坏恢复起来相当麻烦。&amp;lt;/p&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;然后Hugo就完全不用考虑这些了，服务器上只有静态文件，几乎不存在Web攻击风险，而且本地markdown明文，迁移及其简单，够时间速度也是业界顶尖的纯在。也是应了那句话：一朝被蛇咬，十年怕井绳。之前就是因为不想维护PHP&#43;MySQL所以导致所有的文章被清空，所以这也是我选hugo的原因。话又说回来，Hugo必须接入第三方系统才能进行评论。&amp;lt;/p&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;众所周知Hugo是一个纯静态的网站，不像Mix space 有内置的评论系统。之前用了waline但是为了开发类似朋友圈评论那样的评论功能，waline似乎没办法做到，为了满足开发需求，在众多评论系统中选择了Artalk和Twikoo.&amp;lt;/p&amp;gt;&amp;#xA;&amp;lt;h3 id=&amp;#34;-artalk-vs-twikoo-核心对比&amp;#34;&amp;gt;⚖️ Artalk vs. Twikoo 核心对比&amp;lt;/h3&amp;gt;&amp;#xA;&amp;lt;table&amp;gt;&amp;#xA;&amp;#x9;&amp;lt;thead&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;th style=&amp;#34;text-align: left&amp;#34;&amp;gt;特性&amp;lt;/th&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;th style=&amp;#34;text-align: left&amp;#34;&amp;gt;Artalk&amp;lt;/th&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;th style=&amp;#34;text-align: left&amp;#34;&amp;gt;Twikoo&amp;lt;/th&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;lt;/thead&amp;gt;&amp;#xA;&amp;#x9;&amp;lt;tbody&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;集成难度&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;中等，需自行部署后端服务&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;简单&amp;lt;/strong&amp;gt;，提供多种Serverless部署方式&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;部署方式&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;需自有服务器&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;无服务器&amp;lt;/strong&amp;gt;，可部署在Vercel、EdgeOne等平台&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;数据存储&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;SQLite&amp;lt;/strong&amp;gt;（轻量），也支持PostgreSQL/MySQL&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;MongoDB&amp;lt;/strong&amp;gt; 或 &amp;lt;strong&amp;gt;LokiJS&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;性能与资源&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;性能优秀&amp;lt;/strong&amp;gt;（Go语言），资源占用相对较低&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;依赖外部数据库，对小型站点可能显得“笨重”&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;Hugo集成&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;官方文档有指引&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;社区教程和文档非常丰富&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;主题生态&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;有深度整合的主题，如&amp;lt;strong&amp;gt;Hugo-Theme-Amigo&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;支持广泛，多数主题可通过简单配置集成&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;数据迁移&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;官方提供从Twikoo等系统的迁移工具&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;数据导出相对复杂&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;功能亮点&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;&amp;lt;strong&amp;gt;朋友圈风格UI、弹幕、实时评论&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td style=&amp;#34;text-align: left&amp;#34;&amp;gt;轻量、免费、部署选择多&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;lt;/tbody&amp;gt;&amp;#xA;&amp;lt;/table&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;经过对比发现还是Artalk自由度更高一些，不用过于以来外部数据库，这也是为什么选择Artalk的原因。既然有了方向那就开搞~&amp;lt;/p&amp;gt;&amp;#xA;&amp;lt;h2 id=&amp;#34;开始之前确保&amp;#34;&amp;gt;开始之前确保：&amp;lt;/h2&amp;gt;&amp;#xA;&amp;lt;ul&amp;gt;&amp;#xA;&amp;lt;li&amp;gt;[√] 服务器 &#43; 宝塔面板&amp;lt;/li&amp;gt;&amp;#xA;&amp;lt;li&amp;gt;[√] 已安装 Docker&amp;lt;/li&amp;gt;&amp;#xA;&amp;lt;li&amp;gt;[√] 域名&amp;lt;/li&amp;gt;&amp;#xA;&amp;lt;/ul&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;宝塔面板上用 Docker 部署 Artalk 主要分为三个步骤：拉取镜像并创建容器、配置反向代理、集成到 Hugo 博客。&amp;lt;/p&amp;gt;&amp;#xA;&amp;lt;h3 id=&amp;#34;一-在宝塔面板部署-artalk-后端&amp;#34;&amp;gt;一. 在宝塔面板部署 Artalk 后端&amp;lt;/h3&amp;gt;&amp;#xA;&amp;lt;ol&amp;gt;&amp;#xA;&amp;lt;li&amp;gt;  &amp;lt;strong&amp;gt;拉取镜像&amp;lt;/strong&amp;gt;&amp;lt;/li&amp;gt;&amp;#xA;&amp;lt;/ol&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;   *   打开宝塔面板，进入 Docker -&amp;amp;gt; 线上镜像；&amp;lt;/p&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;   *   输入 artalk/artalk-go，点击“搜索”并拉取选择版本下载完成；&amp;lt;/p&amp;gt;</description>
    </item>
    
    <item>
      <title>Windows 11 无法删除 “NUL” 文件</title>
      <link>https://domal.cc/posts/%E7%B3%BB%E7%BB%9F%E6%96%87%E4%BB%B6/</link>
      <pubDate>Wed, 12 Aug 2026 09:55:03 &#43;0800</pubDate>
      <author>豆沫</author>
      <guid>https://domal.cc/posts/%E7%B3%BB%E7%BB%9F%E6%96%87%E4%BB%B6/</guid>
      <description>&amp;lt;h1 id=&amp;#34;windows-11-无法删除-nul文件-尝试粉碎文件等其他操作皆失败&amp;#34;&amp;gt;Windows 11 无法删除 “nul”文件？ 尝试粉碎文件等其他操作皆失败？&amp;lt;/h1&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;&amp;lt;img src=&amp;#34;https://p6-flow-imagex-sign.byteimg.com/labis/image/20e121daf9135f39ec4c3806ebefab60~tplv-be4g95zd3a-448x448.jpeg?lk3s=8e244e95&amp;amp;amp;rcl=202608120959187219B888A040393321CE&amp;amp;amp;rrcfp=2033b573&amp;amp;amp;x-expires=1787104758&amp;amp;amp;x-signature=B%2BAeKgFVxLm4FWtp%2Fg4N94GxUhI%3D&amp;#34; alt=&amp;#34;nul&amp;#34;&amp;gt;&amp;lt;/p&amp;gt;&amp;#xA;&amp;lt;h2 id=&amp;#34;问题现象&amp;#34;&amp;gt;问题现象&amp;lt;/h2&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;整理文件时遇到诡异问题：文件夹内存在名为 &amp;lt;code&amp;gt;nul&amp;lt;/code&amp;gt; 的文件，大小354字节，使用常规删除操作时，系统弹窗提示：&amp;lt;/p&amp;gt;&amp;#xA;&amp;lt;blockquote&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;MS-DOS 功能无效&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;#xA;&amp;lt;/blockquote&amp;gt;&amp;#xA;&amp;lt;h2 id=&amp;#34;根本原因穿越40年的兼容性债务&amp;#34;&amp;gt;根本原因：穿越40年的兼容性债务&amp;lt;/h2&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;该问题根源追溯至1981年发布的 MS-DOS 1.0，核心是&amp;lt;strong&amp;gt;DOS保留设备名&amp;lt;/strong&amp;gt;带来的系统兼容限制。&amp;lt;/p&amp;gt;&amp;#xA;&amp;lt;h3 id=&amp;#34;保留设备名称reserved-device-names&amp;#34;&amp;gt;保留设备名称（Reserved Device Names）&amp;lt;/h3&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;DOS系统为硬件设备预留专属文件名，这类名称具备特殊系统含义，无需完整路径即可被系统识别：&amp;lt;/p&amp;gt;&amp;#xA;&amp;lt;table&amp;gt;&amp;#xA;&amp;#x9;&amp;lt;thead&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;th&amp;gt;名称&amp;lt;/th&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;th&amp;gt;对应设备含义&amp;lt;/th&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;lt;/thead&amp;gt;&amp;#xA;&amp;#x9;&amp;lt;tbody&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;CON&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;控制台（键盘&#43;显示器）&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;NUL&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;空设备（数据黑洞，写入内容直接丢弃）&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;PRN&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;默认打印机&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;AUX&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;辅助串口设备&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;COM1&amp;lt;/code&amp;gt;~&amp;lt;code&amp;gt;COM9&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;串行通讯端口&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;tr&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;LPT1&amp;lt;/code&amp;gt;~&amp;lt;code&amp;gt;LPT9&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;td&amp;gt;并行打印端口&amp;lt;/td&amp;gt;&amp;#xA;&amp;#x9;&amp;#x9;&amp;#x9;&amp;lt;/tr&amp;gt;&amp;#xA;&amp;#x9;&amp;lt;/tbody&amp;gt;&amp;#xA;&amp;lt;/table&amp;gt;&amp;#xA;&amp;lt;p&amp;gt;DOS时代典型使用示例：&amp;#xA;&amp;lt;div class=&amp;#34;code-copy&amp;#34; data-code-copy&amp;gt;&amp;#xD;&amp;#xA;  &amp;lt;div class=&amp;#34;code-copy__toolbar&amp;#34;&amp;gt;&amp;#xD;&amp;#xA;    &amp;lt;span class=&amp;#34;code-copy__lang&amp;#34;&amp;gt;cmd&amp;lt;/span&amp;gt;&amp;#xD;&amp;#xA;    &amp;lt;button type=&amp;#34;button&amp;#34; class=&amp;#34;code-copy__copy&amp;#34; data-copy&amp;gt;复制代码&amp;lt;/button&amp;gt;&amp;#xD;&amp;#xA;  &amp;lt;/div&amp;gt;&amp;#xD;&amp;#xA;  &amp;lt;pre class=&amp;#34;code-copy__pre&amp;#34;&amp;gt;&amp;lt;code class=&amp;#34;language-cmd code-copy__source&amp;#34;&amp;gt;COPY CON file.txt  :: 从控制台输入内容保存到文件&amp;#xD;&amp;#xA;TYPE file.txt &amp;amp;gt; PRN :: 将文件内容直接发送打印机&amp;#xD;&amp;#xA;ECHO Hello &amp;amp;gt; NUL    :: 静默执行，不输出任何内容&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;#xD;&amp;#xA;&amp;lt;/div&amp;gt;&amp;#xD;&amp;#xA;&amp;lt;script&amp;gt;&amp;#xD;&amp;#xA;(function () {&amp;#xD;&amp;#xA;  function loadPrism(cb) {&amp;#xD;&amp;#xA;    if (!document.getElementById(&amp;#39;prism-domal-copy-style&amp;#39;)) {&amp;#xD;&amp;#xA;      var s = document.createElement(&amp;#39;style&amp;#39;);&amp;#xD;&amp;#xA;      s.id = &amp;#39;prism-domal-copy-style&amp;#39;;&amp;#xD;&amp;#xA;      s.textContent = [&amp;#xD;&amp;#xA;        &amp;#39;.code-copy .token.comment,.code-copy .token.prolog,.code-copy .token.doctype,.code-copy .token.cdata{color:var(--color-neutral-5);font-style:italic}&amp;#39;,&amp;#xD;&amp;#xA;        &amp;#39;.code-copy .token.punctuation{color:var(--color-neutral-6)}&amp;#39;,&amp;#xD;&amp;#xA;        &amp;#39;.code-copy .token.property,.code-copy .token.tag,.code-copy .token.boolean,.code-copy .token.number,.code-copy .token.constant,.code-copy .token.symbol,.code-copy .token.deleted{color:var(--color-accent)}&amp;#39;,&amp;#xD;&amp;#xA;        &amp;#39;.code-copy .token.selector,.code-copy .token.attr-name,.code-copy .token.string,.code-copy .token.char,.code-copy .token.builtin,.code-copy .token.inserted{color:var(--color-success)}&amp;#39;,&amp;#xD;&amp;#xA;        &amp;#39;.code-copy .token.operator,.code-copy .token.entity,.code-copy .token.url,.code-copy .language-css .token.string,.code-copy .style .token.string{color:var(--color-warning)}&amp;#39;,&amp;#xD;&amp;#xA;        &amp;#39;.code-copy .token.atrule,.code-copy .token.attr-value,.code-copy .token.keyword{color:var(--color-info)}&amp;#39;,&amp;#xD;&amp;#xA;        &amp;#39;.code-copy .token.function,.code-copy .token.class-name{color:var(--color-accent)}&amp;#39;,&amp;#xD;&amp;#xA;        &amp;#39;.code-copy .token.regex,.code-copy .token.important,.code-copy .token.variable{color:var(--color-warning)}&amp;#39;,&amp;#xD;&amp;#xA;        &amp;#39;.code-copy code[class*=&amp;#34;language-&amp;#34;],.code-copy pre[class*=&amp;#34;language-&amp;#34;]{color:var(--color-neutral-9);text-shadow:none;font-family:var(--font-mono)}&amp;#39;,&amp;#xD;&amp;#xA;        &amp;#39;.code-copy .token.dom-tag{color:var(--color-accent)}&amp;#39;&amp;#xD;&amp;#xA;      ].join(&amp;#39;\n&amp;#39;);&amp;#xD;&amp;#xA;      document.head.appendChild(s);&amp;#xD;&amp;#xA;    }&amp;#xD;&amp;#xA;    if (!document.getElementById(&amp;#39;prism-core&amp;#39;)) {&amp;#xD;&amp;#xA;      var s = document.createElement(&amp;#39;script&amp;#39;);&amp;#xD;&amp;#xA;      s.id = &amp;#39;prism-core&amp;#39;;&amp;#xD;&amp;#xA;      s.src = &amp;#39;https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.min.js&amp;#39;;&amp;#xD;&amp;#xA;      s.async = true;&amp;#xD;&amp;#xA;      s.onload = cb;&amp;#xD;&amp;#xA;      document.head.appendChild(s);&amp;#xD;&amp;#xA;    } else {&amp;#xD;&amp;#xA;      if (window.Prism &amp;amp;&amp;amp; cb) cb();&amp;#xD;&amp;#xA;    }&amp;#xD;&amp;#xA;  }&amp;#xD;&amp;#xA;  loadPrism(function () {&amp;#xD;&amp;#xA;    if (window.Prism) Prism.highlightAll();&amp;#xD;&amp;#xA;  });&amp;#xD;&amp;#xA;&amp;#xD;&amp;#xA;  document.querySelectorAll(&amp;#39;.code-copy[data-code-copy]&amp;#39;).forEach(function (block) {&amp;#xD;&amp;#xA;    var sourceEl = block.querySelector(&amp;#39;.code-copy__source&amp;#39;);&amp;#xD;&amp;#xA;    var copyBtn = block.querySelector(&amp;#39;[data-copy]&amp;#39;);&amp;#xD;&amp;#xA;    if (!sourceEl || !copyBtn) return;&amp;#xD;&amp;#xA;&amp;#xD;&amp;#xA;    copyBtn.addEventListener(&amp;#39;click&amp;#39;, function () {&amp;#xD;&amp;#xA;      var sourceText = sourceEl.textContent;&amp;#xD;&amp;#xA;      var done = function () {&amp;#xD;&amp;#xA;        var orig = copyBtn.textContent;&amp;#xD;&amp;#xA;        copyBtn.textContent = &amp;#39;已复制 &amp;#39;;&amp;#xD;&amp;#xA;        setTimeout(function () { copyBtn.textContent = orig; }, 1800);&amp;#xD;&amp;#xA;      };&amp;#xD;&amp;#xA;&amp;#xD;&amp;#xA;      if (navigator.clipboard &amp;amp;&amp;amp; window.isSecureContext) {&amp;#xD;&amp;#xA;        navigator.clipboard.writeText(sourceText.trim()).then(done).catch(function () {&amp;#xD;&amp;#xA;          fallbackCopy(sourceEl, done);&amp;#xD;&amp;#xA;        });&amp;#xD;&amp;#xA;      } else {&amp;#xD;&amp;#xA;        fallbackCopy(sourceEl, done);&amp;#xD;&amp;#xA;      }&amp;#xD;&amp;#xA;&amp;#xD;&amp;#xA;      function fallbackCopy(el, cb) {&amp;#xD;&amp;#xA;        var range = document.createRange();&amp;#xD;&amp;#xA;        range.selectNodeContents(el);&amp;#xD;&amp;#xA;        var sel = window.getSelection();&amp;#xD;&amp;#xA;        sel.removeAllRanges();&amp;#xD;&amp;#xA;        sel.addRange(range);&amp;#xD;&amp;#xA;        try { document.execCommand(&amp;#39;copy&amp;#39;); cb(); } catch (e) {}&amp;#xD;&amp;#xA;        sel.removeAllRanges();&amp;#xD;&amp;#xA;      }&amp;#xD;&amp;#xA;    });&amp;#xD;&amp;#xA;  });&amp;#xD;&amp;#xA;})();&amp;#xD;&amp;#xA;&amp;lt;/script&amp;gt;&amp;lt;/p&amp;gt;</description>
    </item>
    
  </channel>
</rss>