Bash History: Correct / Repeat The Last Command With a Substitution

I often type the wrong command as follows under Linux bash shell:

rsync -av dir1 user@server1.sxi.io:/path/to/dir1

OR

cp -av file1*.txt file2*.txt /path/to/dest

I need to correct those command as follows:

rsync -av dir5 user@server1.sxi.io:/path/to/dir1
cp -av delta1*.txt delta2*.txt /path/to/dest

How do I replace dir1 with dir5 or file with delta and repeat the last command under bash shell?

The bash shell supports both history search and replace operations. The bash (and many other modern) shell provides access to the command history, the list of commands previously typed. The bash shell supports a history expansion feature found in other shell such as csh.

Syntax: Bash history search and replace the command args

The syntax is as follows for quick substitution and repeat the last command, replacing word1 with word2:

^WORD1^WORD2^

OR

!!:s/WORD1/WORD2

OR

!!:gs/WORD1/WORD2

In this example, I’m trying to copy a file called youtube-demo-andriod-app-part1.avi to /backup directory
$ cp youtube-demo-andriod-app-part-102.avi /backup/
To repeat the last command with a substitution:
$ ^102^1002^
OR
$ !!:s/102/1002
Sample outputs:

cp youtube-demo-andriod-app-part-1002.avi /backup/

Please note that this substitutes only applies to the first occurrence. For example:
$ cp -av file1*.txt file2*.txt /path/to/dest
Replace file1 and file2 with delta1 and delta2, enter:
!!:gs/file/delta
Sample outputs:

cp -av delta1*.txt delta2*.txt /path/to/dest

You can also repeat the previous substitution with &:
cp -av file1*.txt file2*.txt /path/to/dest
!!:gs/file/delta-&/

Sample outputs:

cp -av delta-file1*.txt delta-file2*.txt /path/to/dest

Posted by: SXI ADMIN

The author is the creator of SXI LLC and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post

How to Make Website WCAG Compliant?

Next Post

Link download Kali Linux 2020.1 (ISO + Torrent)

Related Posts