返回
programming2026年6月28日1 分钟

Bashblog:一个Bash脚本即可创建博客的极简方案

#Bash#博客#静态网站#开源工具#Markdown

1. 项目概述

Bashblog是一个单一的Bash脚本,用于创建博客。我创建它的原因是想要一种非常简单的方式,通过服务器上的公共文件夹发布博客文章,无需任何特殊要求和依赖。它适用于GNU/Linux、OSX和BSD系统。有多简单?只需输入 ./bb.sh post 并开始写博客文章即可。你可以在这里看到一个示例:阅读初始博客文章。该页面完全使用bashblog生成,无需额外调整。查看其他bashblog用户。

2. 使用方法

下载代码并将bb.sh复制到一个公共文件夹中(例如,$HOME/public_html/blog),然后运行 ./bb.sh。这将显示可用命令。如果文件不可执行,请键入 chmod +x bb.sh 并重试。在创建第一篇文章之前,你可能需要配置博客设置(标题、作者等)。请阅读下面的“配置”部分以获取更多信息。要创建第一篇文章,只需运行:./bb.sh post。它会尝试使用Markdown(如果已安装)。要强制使用HTML:./bb.sh post -html。脚本将处理其余部分。完成后,访问该文件夹的公共URL(例如 http://server.com/~username/blog),你应该会看到索引文件和该文章的新页面!

3. 高级功能指南

请阅读wiki以了解如何使用Bashblog的高级功能,例如页眉和页脚、静态页面等。

4. 核心特性

超简单使用:只需用你喜欢的编辑器输入文章,脚本就会处理其余部分。无需模板。无需安装。下载bb.sh即可开始写博客。零依赖。它仅基于基本工具(date、basename、grep、sed、head等)运行。开箱即用兼容GNU/Linux、BSD和OSX,Mac上无需GNU coreutils。它会自动检测系统所需的命令开关。所有内容都是静态的。你只需要对具有公共Web文件夹的机器具有shell访问权限。提示:高级用户可以通过ftpfs挂载远程公共文件夹并在本地运行此脚本。允许草稿,包含简单但干净的样式表,自动生成RSS文件。支持标签/分类。支持Markdown、Disqus评论、Twitter、Feedburner、Google Analytics。该项目截至2016年仍在维护。错误已修复,新功能正在考虑中(请参阅“贡献”部分)。所有内容都存储在一个约1000行的bash脚本中,这有多酷?;)

5. 配置说明

测试驱动不需要配置,但如果你计划使用bashblog运行博客,你将希望更改默认标题、作者名称等以匹配你自己的信息。有两种方法可以配置博客字符串:编辑bb.sh并修改global_variables()函数中的变量;创建一个包含配置值的.config文件——如果你不想修改脚本并能够通过git定期更新它,这很有用。软件将首先加载脚本中的值,然后用.config文件中的值覆盖它们。这意味着你不需要在配置文件中定义所有变量,只需定义那些需要覆盖默认值的变量。.config文件的格式是每行一个 variablename="value",就像在global_variables()函数中一样。请记住:引用值,不要用美元符号声明变量,不要在等号周围使用空格。bashblog使用$EDITOR环境值来打开文本编辑器。

6. 详细功能列表

一个简单但美观且可读的设计,只有博客文章。2.0版本新增:通过第三方库支持Markdown。最简单的方法是下载Gruber的Markdown.pl。文章预览。将文章保存为草稿并稍后恢复编辑。每篇文章的HTML页面,使用其标题作为URL。可配置首页文章数量。自动生成RSS文件,支持Feedburner。包含所有文章索引的附加页面。自动为每个标签生成页面。评论委托给Twitter,并额外支持Disqus。支持无cookie的Twitter分享,以符合欧盟cookie法律。支持Google Analytics代码。包含自己的CSS,以便默认情况下所有内容都具有合理的样式。页眉、页脚,以及通常结构良好的HTML文件所需的一切。支持在每页顶部添加额外内容(例如横幅、图像等)。通过w3c进行xhtml验证、CSS验证、RSS验证。每次发布时自动备份网站(存储为.backup.tar.gz)。阅读“更新日志”部分以获取更多更新,或查看我博客上的新闻。

7. 贡献指南

Bashblog开始时只有500行代码,现在已突破1000行代码的障碍。如果我们想保持代码最小化和可理解性,我们需要努力克制自己,不要添加太多功能。欢迎所有错误修复,但全新功能需要强有力的理由才能进入主分支。每个新请求都将在评论中进行诚实和文明的讨论。作为指导原则,拉取请求应:为某些人修复用例(例如国际化);添加一个可以说非常常见的用例(例如用于评论的Disqus集成);尽可能小(几行代码);不需要对代码进行重大重写(不要破坏create_html_file()或write_entry()等);必须在Linux、BSD和Mac上工作。注意使用带有非POSIX标志的GNU coreutils(例如date或grep);遵循UNIX哲学:做好一件事,依赖第三方软件实现外部功能等;使用默认配置时始终保持向后兼容性。

8. 更新日志与许可

更新日志:2.10 添加了global_twitter_card_image;2.9 添加了body_begin_file_index;2.8 错误修复,斯拉夫语言支持(感谢Tomasz Jadowski),移除了现已废弃的Twitter JSON API分享计数,支持静态、不由bashblog管理的html文件;2.7 将文章日期存储在html文件的注释中(#96),重建时,文章日期将在注释日期和文件日期之间同步,注释日期优先;2.6 支持多个作者,为每个作者使用不同的.config;2.5 由Martijn Dekker进行大规模代码清理,'tags'命令,标签列表(网站和命令)中的'posts'现在有单数形式,查看template_tags_posts_singular;2.4 为文章添加了Twitter摘要元数据(#36);2.3.3 移除了大注释头,添加了在索引页面上显示截断文章标签的选项(#61),清理了“所有文章”页面(#57);2.3.2 使用topsy代替twitter进行引用的选项;2.3.1 无cookie的Twitter选项;2.3 智能标签重建和默认Markdown;2.2 灵活的文章标题-文件名转换;2.1 支持标签/分类,'delete'命令;2.0.3 通过外部文件支持其他分析代码;2.0.2 修复了$body_begin_file为空时的错误,在页脚中添加了指向github项目的额外行;2.0.1 允许个性化页眉/页脚文件;2.0 添加了Markdown支持,完全支持BSD日期;1.6.4 修复了本地化日期中的错误;1.6.3 现在支持BSD日期;1.6.2 简化了一些函数和变量以避免重复信息;1.6.1 小时为1位数字时的'date'修复;1.6.0 Disqus评论,外部配置文件,检查'date'命令版本;1.5.1 杂项错误修复和参数检查;1.5 Đurađ Radojičić(djura-san)重构了一些代码并增加了灵活性和国际化;1.4.2 现在问题在Github上处理;1.4.1 一些代码重构;1.4 使用Twitter进行评论,改进了'rebuild'命令;1.3 'edit'命令;1.2.2 Feedburner支持;1.2.1 修复了时间戳错误;1.2 'list'命令;1.1 草稿和预览支持;1.0 阅读 http://is.gd/Bkdoru。许可:本程序是自由软件:你可以根据自由软件基金会发布的GNU通用公共许可证(许可证第3版或(根据你的选择)任何更高版本)的条款重新分发和/或修改它。本程序的分发希望它会有用,但没有任何保证;甚至没有对适销性或特定用途适用性的默示保证。有关更多详细信息,请参阅GNU通用公共许可证。你应该已经随本程序收到了GNU通用公共许可证的副本。如果没有,请访问 http://www.gnu.org/licenses/。关于:一个单一的Bash脚本即可创建博客。下载,运行,写作,完成!资源:Readme。哦!加载时出错。请重新加载此页面。活动:星标1.8k,关注者72,分支237。报告仓库:发布版本无,包0。哦!加载时出错。请重新加载此页面。哦!加载时出错。请重新加载此页面。贡献者:哦!加载时出错。请重新加载此页面。语言:Shell 100.0%。你目前无法执行此操作。


🔗 原文链接:https://github.com/cfenollosa/bashblog