Skip to content

dwmkerr/effective-shell

Repository files navigation

effective-shell

All Contributors

Release Please Version Badge Creative Commons BY-NC-SA

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

This repository contains all of the content for the Effective Shell online book.

Installing the Samples

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:

The one-line shell installer is hosted at github.com/dwmkerr/effective-shell-installer

The Website

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:

Building the Website

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

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

Versioning

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"

Contributing

Please carefully read the Contributing Guide before working on changes.

Copyright & Licensing

All content is Copyright (©) Dave Kerr. Please get in touch by opening an issue if you have questions on copyright or licensing.

Creative Commons BY-NC-SA

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

ASCII Terminal Recordings

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!

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

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Xiaoyou
Xiaoyou "Elsie" Jiang

📖 👀
Tobias Büschel
Tobias Büschel

👀
Doug Foo
Doug Foo

📖 👀
Sallah Kokaina
Sallah Kokaina

📖 👀
samhinton88
samhinton88

📖 👀
Alex Vinall
Alex Vinall

📖 👀
Joseph Knight
Joseph Knight

📖 👀
Doug Todd
Doug Todd

📖 👀
jdhzzz
jdhzzz

📖 👀
valankar
valankar

📖 👀
Denpeer
Denpeer

👀 📖
Marek Bogatzki
Marek Bogatzki

📖 👀
MWarnecke
MWarnecke

📖 👀 🐛
Spike
Spike

👀 🐛
Dong Zhou
Dong Zhou

👀 🐛 📖
Dror Maman
Dror Maman

🐛 📖 👀
Michael Chui
Michael Chui

👀
Saroj Sangphongamphai
Saroj Sangphongamphai

👀
Lee Li
Lee Li

👀 🐛 📖
Lee Li
Lee Li

🐛
Trevor Brown
Trevor Brown

🐛 👀
Philipp Frischmuth
Philipp Frischmuth

👀

This project follows the all-contributors specification. Contributions of any kind welcome!