The many lives of a single hyphen

In cd -, - means "the place I was before." But cat - means "read from standard input." And ls -a's -a is an option flag. The same character, three different roles.
This wasn't sloppiness. It was Unix philosophy. In a world where every keystroke counted, there wasn't room for verbose syntax. So the pioneers packed as much meaning as possible into as few characters as possible. It's a bit like "set," which once held the record for the most dictionary definitions in English, over 400 of them. A simple word, shaped entirely by context.
One character, many meanings: that's the poetry of Unix.
