Text, samples and references for my 'Effective Shell' series. This website is hosted at effective-shell.com.
If you find this book useful, please do consider sponsoring me to help support my open-source work!
- Introduction
- Installing the Samples
- The Website
- Custom Components
- Versioning
- Contributing
- Copyright & Licensing
- ASCII Terminal Recordings
- Thanks!
- Contributors ✨
This repository contains all of the content for the Effective Shell online book.
You can install the samples into your ~/effective-shell
folder with this command:
curl effective.sh | sh
Or can also manually download them using from any of these locations:
- https://effective-shell.com/downloads/effective-shell-samples.zip
- https://effective-shell.com/downloads/effective-shell-samples.tar.gz
The one-line shell installer is hosted at github.com/dwmkerr/effective-shell-installer
The content in this repository is built into a static site available at effective-shell.com. This site is generated using Docusaurus.
This section contains information on how to built, use and edit the site. To help you quickly edit the site, some tips are below:
- The book content is at ./docs/
- The menu structure is defined at sidebars.js.
To setup dependencies, run:
make setup
To test that TypeScript types compile, run:
make typescript-check
To serve the site locally, run:
make serve
To build the site, run:
make build
The built site is generated at ./build
.
Note that the samples
folder is automatically zipped up and added to the website, meaning it can be downloaded directly from:
https://effective-shell.com/downloads/effective-shell-samples.zip
https://effective-shell.com/downloads/effective-shell-samples.tar.gz
Custom Components to support styling are available at:
src/components
There is a live view that can be used to preview each component:
http://localhost:3000/zz-developer-guide/components
Components can be added to global scope, i.e. available in call pages, by adding to the MDXComponents.js
swizzled file:
src/theme/MDXComponents.js
The version of the site and the code is defined in the package.json
file.
Releasing in managed via Release Please in the release-please.yaml
workflow file.
If you need to manually trigger a release, run:
git commit --allow-empty -m "chore: release 2.0.0" -m "Release-As: 2.0.0"
Please carefully read the Contributing Guide before working on changes.
All content is Copyright (©) Dave Kerr. Please get in touch by opening an issue if you have questions on copyright or licensing.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
All terminal recordings used in this project are built using the superb 'asciinema' tool. Many thanks to Marcin Kulik for building such an excellent piece of software.
Thanks to the following people who have helped with reviews, comments, suggestions.
- Andrew Bestbier, Thomas Neumann, Tam Nguyen, Rahul Maliakkal, Peter Mondlock, Samantha Baldwin, Niklas Schmuecker for the proofing, comments and suggestions
- Ogus Ismail for helping me understand some of the nuances of word splitting and filename expansion
- Josh Timmons for proof-reading and suggesting structural improvements as well as grammar and spelling fixes
- Joel Schwarzmann for proofing and adding content on the Python code in the 'How to avoid shell scripting' chapter
- Xiaoyou "Elsie" Jiang for proof-reading and improvements to Chapter 30
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!