Bang Bang

10 May 2013 in Tech

Two quick terminal input manipulation commands today. The first is bangbang (!!). !! is a shortcut that means "substitute this with the last command run". It's most commonly used when you forget to sudo a command.

bash
vagrant@precise64:~$ apt-get install tmux
E: Could not open lock file /var/lib/dpkg/lock -
open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/),
are you root?
vagrant@precise64:~$ sudo !!
sudo apt-get install tmux
[sudo] password for vagrant:

If you want to make sure the command is right before executing it, you can add :p to the end to say "print this" instead of "execute this".

bash
vagrant@precise64:~$ sudo !!:p
sudo apt-get install tmux

Then you can hit the up arrow and enter to run the command.

If you want a bit more versatility, you can use ^caret^substitution. This means "find this first string in the last command, replace it with the second one and run the command again".

bash
vagrant@precise64:~$ sudo apt-get install tumx
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package tumx
vagrant@precise64:~$ ^tumx^tmux
sudo apt-get install tmux
Reading package lists... Done