Upvote for “sudo !!” No one ever seems to know about “!!” And it’s such a useful command.
I personally found out about it when I wrote a bash script that contained a password with two exclamation marks and I wondered why the last command kept being concatenated to the end of the password.
Also checkout thefuck for fixing other various typos
My install of Endeavour doesn’t have it, and I haven’t been able to figure out what package to install to add it. Also haven’t tried very hard cause it’s just a minor convenience but if anyone knows …
Oooh it’s cause I’m using fish isn’t it? Is there a way to add it?
Had to check since this is something I’ve been wondering myself, but apparently not possible. From the fish FAQ:
Because history substitution is an awkward interface that was invented before interactive line editing was even possible. Instead of adding this pseudo-syntax, fish opts for nice history searching and recall features. Switching requires a small change of habits: if you want to modify an old line/word, first recall it, then edit.
However, for the use case here, with sudo:
As a special case, most of the time history substitution is used as
sudo !!
. In that case just press Alt+S, and it will recall your last commandline withsudo
prefixed (or toggle asudo
prefix on the current commandline if there is anything).Oh sick! Thank you!
I’d like to know more about !!
It just expands into the last command you put in your shell, so it’s useful for retrying a command that you want to prepend with
sudo
for example, if you realize you needed elevated privileges, or maybe you want to pipe something in it, pipe it through something, redirect its output etc.Brilliant – I’ve needed this so many times. Thanks for the explanation
doas !!
Based doas enjoyer
Some people never get to experience the joys of squinting into a screen 4 inches away from your nose to inspect a long ass command. It’s the simple things in life
I used to do
sudo !!
, but then I’ve started learning the shortcuts of my shell a bit more -Ctrl+A
jumps to the beginning of the line, which, technically speaking, is a saving of 1 (!) keystroke, compared toShift+1+1
.This has also led to discover that emacs is actually much more useful compared to vim as it uses the same shortcuts.
You cann save another keystroke on that one by using home/end.
If you already submitted the command, you’ll have to hit
Up
first to have a line to jump to the beginning of, though, so it’ll be the same number of keystrokes either way.I do the same thing you do, just with vi-mode keystrokes (
up
, thenesc
-I
).
npm install
Vomits kernel
Okay let’s try that one again, from the top
And, for some reason, it works now.
Why does sudo !! never work for me?
Username is not in the sudoers file. This incident will be reported
What she’ll are you using?
I thought I’d tried it in bash, but I think I must have only tried it in fish
Ahhh this is probably my problem