The Living Thing / Notebooks :

Surviving bash

The flagship product of modern unix is certainly better than any other 80s shell

Usefulness: 🔧 🔧 🔧
Novelty: 💡
Uncertainty: 🤪 🤪 🤪
Incompleteness: 🚧 🚧

General, not macOS-specific or Linux-specific, and see also shells to yak-shave your way into whole other shell paradigms. Or fish for a less awful user experience.

I just don’t care enough to remember. This makes me a Bad Hacker.

Command line tips

See command lines which are mostly bash specific because everything is hard in bash.

bash history

whack this in .inputrc

set meta-flag on
set input-meta on
set output-meta on
set convert-meta off

"\ep": history-search-backward
"\en": history-search-backward
"\e[A": history-search-backward
"\e[B": history-search-forward

$if Bash
    Space: magic-space

Vars, expansions, filenames, whitespace hell

Tilde expansion

Tilde expansion is complicated. Best to avoid tildes and use ${HOME}.

files extension munging in bash

for file in *.html;
    mv "$file" "`basename $file .html`.txt";


mv "$file" "${file%.html}.txt"

Don’t forget the quotes, or it will explode when you have spaces in your filenames and delete stuff that you loved. (I hate bash so hard. I should probably abandon it.)

For loops

Watch out for horrible problems with handling of delimeters. Anyway, for loops are not insane.


for i in $( ls ); do
    echo item: $i

Init file madness

Weird bash syntax errors about ‘end of file’.