In bash, which history expansion re-runs the entire previous command line?

LPIC-1 Exam 101-500, objective 103. GNU and Unix commands easy

Draft — not checked yet. This question was written from the published exam objectives and cites the clause it comes from, but nobody has yet read it against that clause and signed for it.

It is kept out of search results and out of mock exams until they have. Read the source below before you take the answer as settled.

The options

Not correct !$

Wrong. !$ expands to the LAST ARGUMENT of the previous command, e.g. after `mkdir /srv/data` you can type `cd !$`.

Correct !!

Correct. !! expands to the whole previous command line. It is most often seen as `sudo !!` after a command failed for lack of privilege.

Not correct !*

Wrong. !* expands to all the arguments of the previous command, without the command name itself.

Not correct history -c

Wrong, and destructive. history -c clears the current shell's history list rather than replaying anything from it.

Why

History expansion starts with `!`. !! is the previous command line, !n is history entry number n, !-2 is two commands back, !string is the most recent command starting with that string, and the word designators !$ and !* pull out the last argument or all arguments. `history` itself only lists or manipulates the list.

Where this comes from

Cited
LPI exam objective 103.1
What it says
Use the shell history to recall and re-run previous commands.

Practise this

Reading one question is not practice. The trainer will draw a set from objective 103 and space the ones you get wrong.

Practise LPIC-1 Exam 101-500