Occasionally I use the bash command to replace string in previous command:
^foo^bar
Today I wanted to make the replacement in the following line for replacing all occurrences of checkbox
with `radio:
$ git mv _product_checkbox_buttons.html.erb _product_checkbox_button.html.erb $ ^checkbox^radio git mv _product_radio_buttons.html.erb _product_checkbox_button.html.erb
So it only replaces the first occurrence. How do I make it replace all occurrences?
bash --version GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0) Copyright (C) 2007 Free Software Foundation, Inc.
When you do foo= bar then you are assigning an empty string to the environment variable foo and then execute the command bar . It can be used to pass environment variables to a new execution.
The terms foobar (/ˈfuːbɑːr/), foo, bar, baz, and others are used as metasyntactic variables and placeholder names in computer programming or computer-related documentation.
9.3 History Expansion History expansions introduce words from the history list into the input stream, making it easy to repeat commands, insert the arguments to a previous command into the current input line, or fix errors in previous commands quickly.
man bash
says ^old^new
is equivalent to !!:s/old/new/
. You want !!:gs/old/new/
to globally replace.
An easy way of doing this would be:
fc -s checkbox=radio
I have an alias r
defined in my .bashrc
:
alias r='fc -s'
Then what you want to do becomes:
r checkbox=radio
See my answer to "hidden features of bash" question for details.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With