2 of 10 added 78 characters in body

man bash, search for section Special Parameters. For _ you'll find:

expands to the last argument to the previous command, after expansion.

Emphasis is mine because the key difference in a command line context is expansion. For example if I have a variable FOO set to 'bar' and I execute echo $FOO then $_ on the next line will display bar while !$ will just display $FOO


Note that $_ has different meanings in other contexts:

Also set to the full pathname used to invoke each command executed and placed in the environment exported to that command.

...and...

When checking mail, this parameter holds the name of the mail file currently being checked.