folk.zone Wiki

a public knowledge base

Site Tools


indieweb:bashblog

bashblog

A complete blog engine in one ~1,000-line bash script: cfenollosa/bashblog. Zero dependencies beyond coreutils. The tilde-appropriate blog tool: drop bb.sh in a public folder and post.

Setup

mkdir -p ~/blog && cd ~/blog
curl -fsSLO https://raw.githubusercontent.com/cfenollosa/bashblog/master/bb.sh
chmod +x bb.sh
./bb.sh                        # shows the command list

On a pubnix, put it in ~/public_html/blog/ and posts appear at host.tld/~you/blog/ instantly. See Publishing on a Pubnix.

Writing a Post

./bb.sh post                   # opens $EDITOR on a new markdown file

Saves as Title-Of-Post.html and updates index, RSS, and tag pages automatically.

./bb.sh list                   # all posts
./bb.sh edit post.html         # edit (keeps original timestamp)
./bb.sh edit -n post.md        # edit the markdown source
./bb.sh rebuild                # regenerate everything from sources
./bb.sh delete post.html
./bb.sh preview draft.md       # render without publishing

Drafts: quit the editor without publishing and the file stays as a draft. ./bb.sh post draft.md finishes it later.

Config

Create .config next to bb.sh. It overrides defaults without touching the script:

global_software_name="my log"
global_author="you"
global_url="https://tilde.town/~you/blog"
global_email="you@tilde.town"
global_description="notes"

Full variable list: grep '^global_' bb.sh. Notables: global_title, global_date_format, global_posts_per_page, and markdown_bin (point it at pandoc: markdown_bin=“pandoc -f markdown -t html”).

What It Generates

  • index.html: recent posts
  • all_posts.html, all_tags.html, per-tag pages
  • blog.rss: the feed (what tilde.town's planet aggregator wants)
  • bb.css: replace or symlink your own stylesheet, then ./bb.sh rebuild

Limits

  • No comments engine. That is the point: guestbook.txt is the tilde-native answer.
  • Post URLs come from titles. Renaming a title changes the URL.
  • edit preserves the page timestamp; rebuild regenerates pages.

See Also

indieweb/bashblog.txt · Last modified: by 127.0.0.1