Sign up ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Almost by mistake, I figured out you could do something like:

$ cp
$ ^bar1^bar2

And that runs the same command with instead of Now, how about if I have multiple occurrences of the target word? For example:

$ cp
$ ^data^index

It only replaces the first data extension. How do I get it to replace both?

share|improve this question

2 Answers 2

up vote 17 down vote accepted

I think ^data^index is equivalent to !!:s/data/index, so it will only substitute the first word. If you want the whole line substituted, I think you'll have to use !!:gs/data/index/

share|improve this answer
This replacement (:gs/data/index) is a bash feature or is it implicitly calling another program? – JohnTortugo May 18 at 0:59

You can do it by adding ^:& to the end.
^:& will replace two occurrences
^:g& will replace all

$ cp
$ ^data^index^:&
$ cp foo.index bar.index
$ cp
$ ^data^index^:g&
$ cp foo.index bar.index joe.index doe.index

sidenote: in the book 'command line kungfu'
it says that ^:& will replace all

share|improve this answer
Actually, ^:& will do the substitution twice.  To do all occurrences, use ^:g& (g stands for "global"). – G-Man Jul 14 at 20:07
Tnx ! I never tested it for more than two occurrences. Read the command in a book. – Note89 Jul 16 at 6:57

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.