--- format: markdown toc: no title: Bash Shell ... ## Job Control The syntax for "job number" or "JOBSPEC" (when using `kill` or similar) is `%4` or `%5`. ## Startup `bash` by default takes a very long time to initialize because the auto-completion scripts are loaded multiple times; disable this in `~/.bashrc`? ## Piping You can pipe both `stdout` and `stderr` together either to a file or two another command:: grep --asdf >& /some/file grep --asdf |& less ## Prelude I frequently add a one-line version of the following to shell scripts: set -e # fail on error set -u # fail if variable not set in substitution set -o pipefail # fail if part of a '|' command fails Note that `join`, `grep`, and others sometimes exit non-zero return codes on purpose (eg, pipe input closed or found no matches, as expected), which makes life difficult. Sometimes `|| true` is enough to get around this. More on this: ## General Style Google has a style guide: https://google.github.io/styleguide/shell.xml Shellcheck is a lint tool: https://www.shellcheck.net/ http://redsymbol.net/articles/unofficial-bash-strict-mode/