If you make a typo in a long command line in Bash, instead of typing it all out again, you can either recall it from your history, or use caret notation to repeat the command with an appropriate substitution. This looks like the following:
# sudo apache2ctl restrat Action 'restrat' failed. The Apache error log may have more information. # ^strat^start sudo apache2ctl restart
The string after the first caret is the text to match, and the one after the second string is the text with which it should be replaced. This provides a convenient method of not only quickly correcting typos, but to change small parts of the command line in general quickly:
$ touch filea.txt $ ^filea^fileb touch fileb.txt $ ^fileb^filec touch filec.txt
For the particular case of correcting small errors in long paths for
calls, it’s helpful to use the
cdspell option for Bash, which I discuss in my
earlier article on smarter directory navigation.