After writing the previous post, I poked around in the bash shell documentation and found a handy feature I’d never seen before, the shortcut ~-.
I frequently use the command cd - to return to the previous working directory, but didn’t know about ~- as a shotrcut for the shell variable $OLDPWD which contains the name of the previous working directory.
Here’s how I will be using this feature now that I know about it. Fairly often I work in two directories, and moving back and forth between them using cd -, and need to compare files in the two locations. If I have files in both directories with the same name, say notes.org, I can diff them by running
diff notes.org ~-/notes.org
I was curious why I’d never run into ~- before. Maybe it’s a relatively recent bash feature? No, it’s been there since bash was released in 1989. The feature was part of C shell before that, though not part of Bourne shell.
I learned the basics of the command line before bash came out. I’ve picked up newer features here and there by osmosis, but I’ve never read the bash manual systematically. Maybe I should. No doubt I’d learn some useful tricks if I did.
Going further down the rabbit hole, pushd, popd, and dirs are handy for having multiple directories in a stack, and switching between them. I have dirs formatted as a multiline output in my prompt, so I can always see the stack, and pushd +1 to cycle through them for instance.