mdshell - Write your blog straight from the terminal.
This is a simple static site generator (SSG), or "blog making thing".
mdshell requires only Bash and Perl, and builds HTML files from Markdown files.
mdshell refers to the fact you can combine Markdown and
$() sub-shells in your blog posts to dynamically produce the HTML output.
This is a fast way of producing documentation for any installed programs or commands, and a nice easy way to write blog posts in Markdown.
- Written in Bash shell script
- Builds a fast blog with great SEO and mobile support
- Creates blog posts or custom pages.
- Use a mix of Markdown and shell code to write blog posts!
- Use your terminal - no text editor or IDE required (but you can use them too).
- Automatically generates index pages for categories, tags, authors and more.
- Also generates a valid RSS feed and XML sitemap.
- Includes a "Contact" page that works out of the box! (uses formspree.io to send you emails, requires JS)
- Includes a very fast page search, with highlighted matches (uses Jets, requires JS)
- Supports fullscreen, native app experience on mobile/smartphone if added to Homescreen
- Supports code syntax highlighting (requires Pygments, default theme is
- Optionally use Google Fonts to choose custom web fonts
- Optionally use Git for saving, managing and reverting versions and deployments
- Optionally use GitHub Pages for free, fast, and secure (SSL enabled) site hosting
- Supports many other web hosting options too (GitLab Pages, Netlify, others).
setup - set site defaults, settings and options.
source .site_setup - source the app and site settings - important!
server [start|stop] - start/stop a local web server.
new post - create a new post. Follow the on-screen instructions. All index pages will be updated and re-built after creating a new post.
publish "message" - save and publish latest changes.
new post -all - creates a new post, as above, but allows overriding various site defaults.
new page file.md > file.html - create a page from a Markdown file.
new page "$html" > file.html - create a page from an HTML string.
If you edit any existing Markdown or .mdsh files, you may need to re-build the HTML pages:
rebuild - re-build all index pages (authors, categories, tags, etc).
rebuild file.md file.html - re-build a specific page.
rebuild file.mdsh file.html - re-build a page from a .mdsh file.
rebuild -all - re-build all posts from their Markdown files.
rebuild -ALL - re-build all posts from their .mdsh files.
After publishing your new post or page, you can update your sitemap.
rebuild sitemap - re-build and publish an updated XML sitemap file.
Read the wiki for more help and usage information.
See Issues page for planned features and known bugs.