Ein Blog

Ihr kennt ja sicher den Trick, dass wenn man sudo vergessen hat, in der Zeile danach einfach sudo !! schreiben kann, um den letzten Befehl mit Sudo auszuführen. Das !! wird dann einfach durch den vorherigen Shell-Befehl ersetzt. Stellt sich raus: Das ist Teil eines größeren Features.

Da gibt es immer einen Line-Designator, dann ggf noch einen Word-Designator und einen Modifier. Ich zitiere mal ein paar Beispiele aus dem Post:

# line designators
$ !!           # the previous line
$ !-2          # two lines back
$ !1337        # the 1337th line, as displayed by `history`
$ !ssh         # the most recent line starting with "ssh"
$ !?dandelion? # the most recent line containing "dandelion"
$ !#           # the current line, written so far
$ ^ssh^scp^    # replace first ssh with scp in previous command

# word designators
$ !:0   #  1st word --> "/path/to/script.sh"
$ !:1   #  2nd word --> "hello world"
$ !:$   # last word --> "1337"

# modifiers
$ !:$:h # strip filename (`dirname`)
$ !:1:t # strip leading path (`basename`)

Schaut nochmal bei dem Artikel vorbei, der hat noch mehr und erklärt das super.