Thanks, but most of that would be way over the top for my "newbies".

However, You must be the third or fourth person today to suggest that I add a TOC - so that is something I think I'll need to look at!

Maybe most useful as resources for further study.

Looks like Day 20 covers shell scripting. A few things worth mentioning:

You can write tests for shell scripts and write TAP (Test Anything Protocol) -formatted output: https://testanything.org/producers.html#shell

Quoting in shell scripts is something to be really careful about:

> This and this do different things:

  # prints a newline
  echo $(echo "-e a\nb")

  # prints "-e a\nb"
  echo "$(echo "-e a\nb")"
Shellcheck can identify some of those types of (security) bugs/errors/vulns in shell scripts: https://www.shellcheck.net/

LearnXinYminutes has a good bash reference: https://learnxinyminutes.com/docs/bash/

And an okay Ansible reference, which (like Ops School) we should contribute to: https://learnxinyminutes.com/docs/ansible/

Why do so many pros avoid maintaining shell scripts and writing one-off commands that they'll never remember to run again later?

...

It may be helpful to format these as Jupyter notebooks with input and output cells.

- Ctrl-Shift-Minus splits a cell at the cursor

- M and Y toggle a cell between Markdown and code

If you don't want to prefix every code cell line with a '!' so that the ipykernel Jupyter python kernel (the default kernel) executes the line with $SHELL, you can instead install and select bash_kernel; though users attempting to run the notebooks interactively would then need to also have bash_kernel installed: https://github.com/takluyver/bash_kernel

You can save a notebook .ipynb to any of a number of Markdown and non-Markdown formats https://jupytext.readthedocs.io/en/latest/formats.html#markd... ; unfortunately jupytext only auto-saves to md without output cell content for now: https://github.com/mwouts/jupytext/issues/220

You can make reveal.js slides (that do include outputs) from a notebook: https://gist.github.com/mwouts/04a6dfa571bda5cc59fa1429d1309...

With nbconvert, you can manually save an .ipynb Jupyter notebook as Markdown which includes the cell outputs w/ File > "Download as / Export Notebook as" > "Export notebook to Markdown" or with the CLI: https://nbconvert.readthedocs.io/en/latest/usage.html#conver...

    jupyter convert --to markdown
    jupyter convert --help
With Jupyter Book, you can build an [interactive] book as HTML and/or PDF from multiple Jupyter notebooks as e.g. Markdown documents https://jupyterbook.org/intro.html :

    jupyter-book build mybook/
...

From https://westurner.github.io/tools/#bash :

    type bash
    bash --help
    help help
    help type
    apropos bash
    info bash
    man bash
    
    man man
    info info
From https://news.ycombinator.com/item?id=22980353 ; this is how dotfiles work:

    info bash -n "Bash Startup Files"
  
> https://www.gnu.org/software/bash/manual/html_node/Bash-Star...

...

Re: dotfiles, losing commands that should've been logged to HISTFILE when running multiple bash sessions and why I wrote usrlog.sh: https://westurner.github.io/hnlog/#comment-20671184 (Ctrl-F for: "dotfiles", "usrlog.sh", "inputrc")

https://dotfiles.github.io/

https://github.com/webpro/awesome-dotfiles

...

awesome-sysadmin > resources: https://github.com/kahun/awesome-sysadmin#resources