<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Bash解析 | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《unbash：零依赖的 Bash 解析器》</title><link>https://channel.meo-ai.com/posts/692</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/692</guid><pubDate>Sat, 15 Aug 2026 12:55:27 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《unbash：零依赖的 Bash 解析器》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;br /&gt;&lt;a href=&quot;/search/result?q=%23Web%E5%BC%80%E5%8F%91&quot; title=&quot;#Web开发&quot;&gt;#Web开发&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23NodeJs&quot; title=&quot;#NodeJs&quot;&gt;#NodeJs&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Bash%E8%A7%A3%E6%9E%90&quot; title=&quot;#Bash解析&quot;&gt;#Bash解析&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TypeScript&quot; title=&quot;#TypeScript&quot;&gt;#TypeScript&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23AST&quot; title=&quot;#AST&quot;&gt;#AST&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7&quot; title=&quot;#命令行工具&quot;&gt;#命令行工具&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E9%9D%99%E6%80%81%E5%88%86%E6%9E%90&quot; title=&quot;#静态分析&quot;&gt;#静态分析&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 定位清晰：unbash 是一个用 TypeScript 编写的、零依赖的 Bash 解析器，能将 Bash 源码（命令、脚本或嵌入在其他格式中的 shell 代码）解析为带类型和源码位置的 AST，且不执行代码&lt;br /&gt;2. 适用场景丰富：可用于权限审核、静态盘点脚本中的可执行文件和依赖引用、将 &lt;code&gt;curl&lt;/code&gt; 等命令结构化导入、为粘贴的 Bash 代码附加诊断信息、构建可视化解释、以及安全地查找和迁移命令调用&lt;br /&gt;3. 语法支持全面：涵盖命令、控制流、管道、重定向、赋值、复合语句、参数扩展、进程替换、heredoc、算术表达式等，嵌套命令在参数、数组索引、算术表达式中仍保持结构化&lt;br /&gt;4. 容错能力强：对于畸形或不完整的输入，会返回尽力而为的部分 AST，并附带带源码位置的错误信息，适合处理编辑器输入或用户粘贴内容&lt;br /&gt;5. 性能碾压对手：在多个基准测试中，解析吞吐量远超 tree-sitter-bash（约 717 倍）、sh-syntax（约 92870 倍）和 bash-parser（约 275291 倍），包体积仅 80KB 压缩后 19KB&lt;br /&gt;6. 与竞品差异化明显：相比 tree-sitter-bash 提供的是可执行语法的类型化 AST 而非 CST；相比 sh-syntax 无需 WASM 且 API 更轻量；相比 bash-parser 支持更多 Bash 特性（如 &lt;code&gt;[[ ]]&lt;/code&gt;、&lt;code&gt;(( ))&lt;/code&gt;、herestrings、process substitution 等）且具备错误恢复能力&lt;br /&gt;7. 与 shellcheck 的互补关系：unbash 专注于&quot;解析结构&quot;，不做语义分析；以下场景推荐用 shellcheck 而非 unbash：&lt;br /&gt;   - 检查变量是否已定义或是否被引用（如未引用变量 &lt;code&gt;$var&lt;/code&gt; 可能引发 word splitting）&lt;br /&gt;   - 检测命令是否存在及其参数合法性（如 &lt;code&gt;git --不存在的参数&lt;/code&gt; 语法正确但运行会报错）&lt;br /&gt;   - 识别常见陷阱和反模式（如 &lt;code&gt;cat file | grep pattern&lt;/code&gt; 可简化为 &lt;code&gt;grep pattern file&lt;/code&gt;）&lt;br /&gt;   - 检查权限相关风险（如 &lt;code&gt;rm -rf /$undefined_var&lt;/code&gt; 的潜在危险）&lt;br /&gt;   - 提供可操作的修复建议（shellcheck 会直接给出 SC 规则编号和修复方案）&lt;br /&gt;   - 对脚本进行全面的最佳实践审查（POSIX 兼容性、可移植性建议等）&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://github.com/webpro-nl/unbash&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://github.com/webpro-nl/unbash&quot;&gt;https://github.com/webpro-nl/unbash&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://github.com/webpro-nl/unbash&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Fast 0-deps bash parser written in TypeScript. Contribute to webpro-nl/unbash development by creating an account on GitHub.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;GitHub&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;GitHub - webpro-nl/unbash: Fast 0-deps bash parser written in TypeScript&quot; src=&quot;/static/https://cdn4.telesco.pe/file/vQUj277sD_Gwtce0lyLqPsUcyAZCwZXOsmmnZwfHo6rui6B-SL-KC_HxE4wpkteg1mw-l6DXn6M2DES3NipOnerSbyBccQozGyseFIm2MxGL-bh7ZR1_uQDIo8hbsyNNO_jQgjVePm1KTFuQH0ESeB42RJWNAgrj8DLDSFVaX76aHegABcJqyWBBg3kttHnv4x0D7gSz3M0JlTx005aO2oGX1acRoBwLNnGfQuFBGrNfIYtFEBfaShL2xJzePDgTKz9f4Nwcah30Ow0id8zQjkEVBBUy2GMnqCkLQX2HwbDEmlte8D0zsFRSofjaMlq0-JhpdoPDDZoaBl3WIMtpdQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;GitHub - webpro-nl/unbash: Fast 0-deps bash parser written in TypeScript&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Fast 0-deps bash parser written in TypeScript. Contribute to webpro-nl/unbash development by creating an account on GitHub.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item></channel></rss>